是否有一种方法可以让按键、按键、模糊和更改事件在一行中调用相同的函数,或者我必须分别执行它们?
我的问题是,我需要验证一些数据与数据库查找,并希望确保验证不错过在任何情况下,无论是键入或粘贴到框。
是否有一种方法可以让按键、按键、模糊和更改事件在一行中调用相同的函数,或者我必须分别执行它们?
我的问题是,我需要验证一些数据与数据库查找,并希望确保验证不错过在任何情况下,无论是键入或粘贴到框。
当前回答
Tatu的答案是我如何直观地做到这一点,但我在Internet Explorer中遇到了一些问题,这种嵌套/绑定事件的方式,即使它是通过.on()方法完成的。
我还不能准确地指出问题出在jQuery的哪个版本上。但我有时会在以下版本中看到问题:
2.0.2 1.10.1 1.6.4, 移动1.3.0b1 移动1.4.2 移动1.2.0
我的解决方法是先定义函数,
function myFunction() {
...
}
然后分别处理这些事件
// Call individually due to IE not handling binds properly
$(window).on("scroll", myFunction);
$(window).on("resize", myFunction);
这不是最漂亮的解决方案,但它适合我,我想我会把它放在那里,以帮助其他可能偶然发现这个问题的人
其他回答
从jQuery 1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind()方法用于将事件处理程序直接附加到元素。
$(document).on('mouseover mouseout',".brand", function () {
$(".star").toggleClass("hovered");
})
$("element").on("event1 event2 event..n", function() {
//execution
});
本教程是关于处理多个事件的。
Tatu的答案是我如何直观地做到这一点,但我在Internet Explorer中遇到了一些问题,这种嵌套/绑定事件的方式,即使它是通过.on()方法完成的。
我还不能准确地指出问题出在jQuery的哪个版本上。但我有时会在以下版本中看到问题:
2.0.2 1.10.1 1.6.4, 移动1.3.0b1 移动1.4.2 移动1.2.0
我的解决方法是先定义函数,
function myFunction() {
...
}
然后分别处理这些事件
// Call individually due to IE not handling binds properly
$(window).on("scroll", myFunction);
$(window).on("resize", myFunction);
这不是最漂亮的解决方案,但它适合我,我想我会把它放在那里,以帮助其他可能偶然发现这个问题的人
如果你将同一个事件处理程序附加到几个事件上,你经常会遇到多个事件同时触发的问题(例如,用户在编辑后按tab键;按键、改变和模糊都可能触发)。
听起来你真正想要的是这样的:
$('#ValidatedInput').keydown(function(evt) {
// If enter is pressed
if (evt.keyCode === 13) {
evt.preventDefault();
// If changes have been made to the input's value,
// blur() will result in a change event being fired.
this.blur();
}
});
$('#ValidatedInput').change(function(evt) {
var valueToValidate = this.value;
// Your validation callback/logic here.
});
你可以使用.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)