我有一个要触发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());
});