当输入值发生更改时,我使用以下几行触发事件: 但是,当我只单击输入字段时(在此不做任何更改),这也会触发。
有没有一种方法可以防止它仅在输入字段中的单击时触发,还是仅在值更改时才触发?我正在寻找一种适用于输入和粘贴的解决方案。
我的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;
}
});
在此先感谢您的帮助, 汤姆
答案 0 :(得分:1)
您可以简单地将input
和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
事件不同,该事件仅在提交值时才触发,例如通过按Enter键,从选项列表中选择一个值等等。
此外,您可以使用.on()
方法而不是.bind()
,因为.on()
方法将事件处理程序附加到jQuery对象中当前选定的元素集。 从jQuery 1.7起,.on()
方法提供了附加事件处理程序所需的所有功能。