JQuery检测相同表单AJAX请求的keyup()和change()



我有一个要触发AJAX请求的搜索表单,其中包含<input type="text"><select></select>表单元素。

我希望在有人开始打字时发出AJAX请求,所以我最初使用的是:

$('#searchform').keyup(function() {
   //GRAB TEXT FROM INPUT AND START AJAX
});

但现在表格有下降,所以为了解决这个问题,我把它改为:

$('#searchform').change(function() {
   //GRAB VALUES FROM INPUT AND DROPDOWNS AND START AJAX
});

但这意味着它不再在有人在<input type="text">字段中键入任何内容时启动请求,直到我修改了其他内容。

是否可以根据表单是否"更改"或输入字段是否键入来运行函数?我应该写两个函数吗?还是有一个选择器可以实现这一点?

如果您委托事件,您可以在这两个事件上运行您的函数,如下所示:

$('#searchform').on('keyup change', function() {
   //GRAB VALUES FROM INPUT AND DROPDOWNS AND START AJAX;
});

只是在事件之间留出一个空间。这里有一个快速而肮脏的例子。

您将需要监听这两个事件,但您可以通过将两者连接到单个回调(即update)来简化这一过程。

var update = function() {
    // Handle update to form.
};
$('#searchform').keyup(update);
$('#searchform').change(update);

编写一个函数来调用ajax并将值作为参数传递

function foo(x) {
   // ajax call with x
}
$('#searchform').keyup(function() {
   //GRAB TEXT FROM INPUT AND START AJAX
   foo($(this).val());
});
$('#searchform').change(function() {
   //GRAB VALUES FROM INPUT AND DROPDOWNS AND START AJAX
   foo($(this).val());
});

相关内容

  • 没有找到相关文章

最新更新