0

我有一个搜索表单,我想触发一个 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">直到我修改其他内容。

是否可以根据表单“更改”或输入字段是否输入来运行函数?我应该写两个函数还是有一个选择器来完成这个?

4

3 回答 3

4

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

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

只需在事件之间留一个空格。是一个快速而肮脏的例子。

于 2013-07-15T20:55:12.567 回答
1

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

var update = function() {
    // Handle update to form.
};

$('#searchform').keyup(update);
$('#searchform').change(update);
于 2013-07-15T20:54:44.527 回答
1

编写一个函数来调用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());
});
于 2013-07-15T20:54:59.993 回答