jQuery: 仅当输入值改变时触发 mouseup 事件
jQuery: Fire mouseup event only when input value has changed
我使用以下行在输入值发生变化时触发事件,这按预期工作。
但是,当我在输入字段中单击时(没有做或更改那里的任何内容),这也会触发。
有没有一种方法可以防止它只在输入字段中单击时触发,或者它只在值更改时触发?我正在寻找一种适用于输入和粘贴的解决方案。
我的jQuery:
$('input[type="text"]').bind('keyup mouseup', function() {
var val = $(this).val();
var isnum = /\d/.test(val);
if(isnum == true) {
// do some stuff;
} else {
// do some other stuff;
}
});
非常感谢您对此提供的任何帮助,
汤姆
您可以简单地在元素上绑定 input
and paste
事件,例如:
$('input[type="text"]').on('input paste', function() {
var val = $(this).val();
var isnum = /\d/.test(val);
if(isnum == true) {
// do some stuff;
} else {
// do some other stuff;
}
});
请注意,每次元素值更改时都会触发 input
事件。这与 change
事件不同,后者仅在提交值时触发,例如按下回车键、从选项列表中选择值等。
此外,您可以使用 .on()
方法代替 .bind()
,因为 .on()
方法将事件处理程序附加到 jQuery 对象中当前选定的元素集。 从 jQuery 1.7 开始,.on()
方法提供了附加事件处理程序所需的所有功能。
我使用以下行在输入值发生变化时触发事件,这按预期工作。 但是,当我在输入字段中单击时(没有做或更改那里的任何内容),这也会触发。
有没有一种方法可以防止它只在输入字段中单击时触发,或者它只在值更改时触发?我正在寻找一种适用于输入和粘贴的解决方案。
我的jQuery:
$('input[type="text"]').bind('keyup mouseup', function() {
var val = $(this).val();
var isnum = /\d/.test(val);
if(isnum == true) {
// do some stuff;
} else {
// do some other stuff;
}
});
非常感谢您对此提供的任何帮助, 汤姆
您可以简单地在元素上绑定 input
and paste
事件,例如:
$('input[type="text"]').on('input paste', function() {
var val = $(this).val();
var isnum = /\d/.test(val);
if(isnum == true) {
// do some stuff;
} else {
// do some other stuff;
}
});
请注意,每次元素值更改时都会触发 input
事件。这与 change
事件不同,后者仅在提交值时触发,例如按下回车键、从选项列表中选择值等。
此外,您可以使用 .on()
方法代替 .bind()
,因为 .on()
方法将事件处理程序附加到 jQuery 对象中当前选定的元素集。 从 jQuery 1.7 开始,.on()
方法提供了附加事件处理程序所需的所有功能。