【问题标题】:Clearing input text field on enter or search button?清除输入或搜索按钮上的输入文本字段?
【发布时间】:2012-09-09 21:07:39
【问题描述】:

我有一个表单可以让我的用户搜索。我正在使用 jQuery 将搜索结果附加到页面下方而不重新加载页面。所以,我有这个:

isbn.php:
    <form method="post" action="ajax.php" name="searchISBN" id="searchForm"> 
        <input type="text" name="isbn" placeholder="Search..." />
        <input class="myaccount" id="doSearch" name="doSearch" type="submit" value="Search" />
    </form>

问题是,当用户点击搜索按钮或点击回车时,我需要清除输入文本搜索字段。按回车键和搜索按钮都会执行搜索,所以当任何一个动作发生时都必须清除。

但是,我完全被难住了。

任何帮助将不胜感激!

编辑: 我已经尝试了 Treffynnon 的建议。问题是,我已经禁用了实际加载 ajax.php 的搜索按钮。因此,当我使用该代码时,它会阻止页面停留在 isbn.php 上并加载 ajax.php 。这是加载搜索结果的代码。

isbn.php:
<script>
// attach a submit handler to the form
$("#searchForm").submit(function(event) {
// stop form from submitting normally
event.preventDefault(); 

// get some values from elements on the page:
var $form = $( this ),
term = $form.find( 'input[name="isbn"]' ).val(),
//term = "isbn",
url = $form.attr( 'action' );
    $.post( url, { doSearch: "Search", isbn: term } ,
        function( data ) {
            var content = $( data );

          $( "#result" ).append( content );

      }
    );
});
</script>

【问题讨论】:

    标签: php javascript jquery html


    【解决方案1】:
    $('#searchForm').submit(function(){
        // do search loading code here and then
        $('input[name="isbn"]').val('');
    });
    

    根据您的更新试试这个:

    // attach a submit handler to the form
    $("#searchForm").submit(function(event) {
    // stop form from submitting normally
    event.preventDefault(); 
    
    // get some values from elements on the page:
    var $form = $( this ),
    $term_input = $form.find('input[name="isbn"]'),
    term = $term_input.val(),
    //term = "isbn",
    url = $form.attr( 'action' );
        $.post( url, { doSearch: "Search", isbn: term } ,
            function( data ) {
                var content = $( data );
    
              $( "#result" ).append( content );
          }
        );
        $term_input.val('');
    });
    

    【讨论】:

    • 我很肯定,我的错误编码不会让这个解决方案发挥作用。你能看看我对原始帖子所做的编辑吗?
    • 没关系!我刚刚添加了 $('input[name="isbn"]').val('');到我现有的 jQuery 的末尾,就完成了!非常感谢!!!!
    • 这个版本的代码似乎比仅仅添加 $('input[name="isbn"]').val('');到我的代码的末尾。再次,非常感谢!
    • 很高兴你喜欢它。我的目标是尽量减少我的代码调用的 DOM 遍历方法的数量,因为这样可以节省用户浏览器的大量处理。
    【解决方案2】:

    添加一个隐藏变量来实现,如下:

    <form method="post" action="ajax.php" name="searchISBN" id="searchForm">          
        <input type="text" name="isbn_holder" placeholder="Search..." />         
        <input type="hidden" name="isbn"/>
        <input class="myaccount" id="doSearch" name="doSearch" type="submit" value="Search" />     
    </form> 
    
    $('#searchForm').submit(function(){     
        $('input[name="isbn"]').val($('input[name="isbn_holder"]').val()); 
        $('input[name="isbn_holder"]').val(''); 
    });
    

    【讨论】:

    • 这可行,但它更复杂,并且会使用更多的 proc 时间在 DOM 中搜索两个元素,而不仅仅是一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多