是否有一种方法可以让按键、按键、模糊和更改事件在一行中调用相同的函数,或者我必须分别执行它们?
我的问题是,我需要验证一些数据与数据库查找,并希望确保验证不错过在任何情况下,无论是键入或粘贴到框。
是否有一种方法可以让按键、按键、模糊和更改事件在一行中调用相同的函数,或者我必须分别执行它们?
我的问题是,我需要验证一些数据与数据库查找,并希望确保验证不错过在任何情况下,无论是键入或粘贴到框。
当前回答
但为了防止多重触发:
var a;
var foo = function() {
clearTimeout(a);
a=setTimeout(function(){
//your code
console.log("Runned")
},50);
}
$('textarea').on('blur change', foo);
其他回答
可以使用bind方法将函数附加到多个事件。只需要传递事件名称和处理函数,如下所示:
$('#foo').bind('mouseenter mouseleave', function() {
$(this).toggleClass('entered');
});
另一个选择是使用jquery api的链接支持。
你可以使用.on()将一个函数绑定到多个事件:
$('#element').on('keyup keypress blur change', function(e) {
// e.type is the type of event fired
});
或者只是将函数作为参数传递给普通的事件函数:
var myFunction = function() {
...
}
$('#element')
.keyup(myFunction)
.keypress(myFunction)
.blur(myFunction)
.change(myFunction)
但为了防止多重触发:
var a;
var foo = function() {
clearTimeout(a);
a=setTimeout(function(){
//your code
console.log("Runned")
},50);
}
$('textarea').on('blur change', foo);
我就是这么做的。
$("input[name='title']").on({
"change keyup": function(e) {
var slug = $(this).val().split(" ").join("-").toLowerCase();
$("input[name='slug']").val(slug);
},
});
你可以这样定义你想重用的函数:
var foo = function() {...}
之后,你可以在你的对象上设置任意数量的事件监听器来触发该函数,使用on('event'),在中间留出一个空间,如下所示:
$('#selector').on('keyup keypress blur change paste cut', foo);