我正在构建一个搜索表单和.keyup中的ajax函数可以有不同的参数,我想通过检查是否存在另一个值来检查是否需要包含此arg。这就是我现在所拥有的:
var delay = (function() {
var timer = 0;
return function(callback, ms) {
clearTimeout(timer);
timer = setTimeout(callback, ms);
};
})();
if (GLOBAL_VARS['link_id']) {
search.keyup(function() {
delay(function() {
var query = search.val();
ajaxGet(GLOBAL_VARS.distributorsSearchDistUrl, {
'query': query,
'pk' : GLOBAL_VARS['link_id']
}, function(content) {
$('#distributors').html(content);
set_favorite();
});
}, 500);
});
} else {
search.keyup(function() {
delay(function() {
var query = search.val();
ajaxGet(GLOBAL_VARS.distributorsSearchDistUrl, {
'query': query
}, function(content) {
$('#distributors').html(content);
set_favorite();
});
}, 500);
});
}
HTML:
<div class="input-field col s6 right no-margin">
<input id="search" type="text" class="validate" name="search">
<label class="active" for="search">Search</label>
</div>
但是在我输入任何一个leter(a
例如get)后,这只能工作一次:
search_dist?query=a&pk=64
但是当我输入aa(第二个输入)时,我得到:
search_dist?query=aa
没有pk
。
我做错了什么?
答案 0 :(得分:1)
对于初学者,我建议将您的条件置于.keyup
回调中。这样可以避免尝试将同一事件两次绑定到同一个元素。
search.keyup(function() {
delay(function() {
var data = {
query: search.val();
}
if (GLOBAL_VARS['link_id']) {
data.pk = GLOBAL_VARS.link_id;
}
ajaxGet(GLOBAL_VARS.distributorsSearchDistUrl, data, function(content) {
$('#distributors').html(content);
set_favorite();
});
}, 500);
});
工作plnkr