javascript - 快速按下输入键

标签 javascript php

我正在搜索大约 5000 条记录。搜索按钮工作正常。但是当我按回车键时太快了。它不会带回结果。我已经尝试了来自 stckoverflow.com 的代码,但它对我不起作用。

我的搜索文本框是

<input name="search_value" id="country_name"   onkeyup="Javascript: if (event.keyCode == 13) return false; searchFilter();"  />

用于 searchfilter() 的 Javascript

function searchFilter()
{
    //alert("");
    $("#loader").show();
    var search_variable = $("#search_variable").val();
    var search_value = $("#country_name").val();
    //alert(search_value);
    $.ajax({
        url: 'searchorder.php?act=save&search_variable=' + search_variable + '&search_value=' + search_value,
        success: function(data) {
            //alert(data);
            $("#loader").hide();
            $(".contentText").html(data);
            // $("#feedbackcommon"+act_id).show();
        }
    });
}

HTML

<form method="post" name="searchform"><?php echo SEARCH_TITLE; ?>
    <label for="select"></label>
    <select name="search_variable" id="search_variable" onchange="checkvalue(this.value)" >
        <option value="rfq_id"><?php echo ORDER_ID; ?></option> 
        <option value="po_no"><?php echo PO_NO; ?></option>
        <option value="issue_no"><?php echo ISSUE_NO; ?></option>
        <option value="serial"><?php echo SERIAL_NO; ?></option>
        <option value="customers_firstname"><?php echo NAME_STORE; ?></option>
        
    </select>

    <input name="search_value" id="country_name"   onkeyup="Javascript: if (event.keyCode == 13) 
                searchFilter(); "  />
   
    <input type="button" name="Button" id="button" value="<?php echo SEARCH_BUTTON; ?>" class="myButton" onclick="searchFilter();" />
    <a href="allorders.php"><input type="button" name="button2" id="button2" value="<?php echo CLEAR_BUTTON; ?>" class="myButton" /></a>
    <div id="loader"><img src="images/opc-ajax-loader.gif" /></div>
</form>

最佳答案

你需要像这样使用“ promise 超时”:

var searchTimer  = null;
var searchInput  = $('#country_name');
var searchResult = $('.contentText');

searchInput.on('keyup', function() {
    clearTimeout(searchTimer);
    searchTimer = setTimeout(function() {
        var val = $.trim(searchInput.val());
        if (val) {
            $.ajax({
                url: 'searchorder.php?search_value=' + val,
                cache: false, // deny cache GET requests
                success: function(data) {
                    searchResult.html(data);
                }
            });
        }
    }, 300);
});

关于javascript - 快速按下输入键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25795720/

相关文章:

php - ssl 不适用于 chrome 和 safari

HTML 中的 PHP WordPress Foreach H2 标题

javascript - 如何使用 Javascript 在外部点击时关闭 css 下拉菜单?

javascript - 使用 modernizr.js/yepnope.js 加载 Google Maps API

javascript - Kendo ui - 删除时需要显示带有是或否按钮的剑道确认模式

javascript - 在 React 中调用组件时访问 props 时遇到问题

php - 无法使用 str_replace 删除特殊字符

javascript - 是否可以将js变量写入纯html?

php - 如何在 PHPUnit 中测试 cmp()

javascript - 如何从 executeQueryAsync 获取返回值?