我在jQuery 1.9.1中使用这个例子
How to delay the .keyup() handler until the user stops typing?
在用户停止输入后延迟键盘请求。
// Custom Delay Function
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
// Match Old Password
$('input[name="old_password"]').keyup(function(){
delay(function(){
var data = $.trim($(this).val());
// Send request to check
/*$.post('admin/ajax/passReq.php', {action: 'old_match', data: data}, function(response){
console.log('working');
});*/
console.log('working');
}, 2000 );
});
但我在jquery中得到typeError: o.nodeName is undefined
:(
这不适用于1.9.1或者我必须以另一种方式使用它吗?
答案 0 :(得分:1)
您在延迟通话中使用this
。 $(this)
不会是文本框。
将其移出延迟函数调用:
$('input[name="old_password"]').keyup(function(){
var el = $(this);
// ^^^^^^^^^^^^^
delay(function(){
...
}, 2000 );
});
答案 1 :(得分:0)
// Match Old Password
$('input[name="old_password"]').keyup(function(){
var el = $(this); //you need this this.
delay(function(){
var data = $.trim(el.val());
// Send request to check
/*$.post('admin/ajax/passReq.php', {action: 'old_match', data: data}, function(response){
console.log('working');
});*/
console.log('working');
}, 2000 );
});
答案 2 :(得分:0)
更改
var data = $.trim($(this).val());
到
var data = $.trim($('input[name="old_password"]').val());
你的代码实际上几乎是正确的。