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() 方法提供了附加事件处理程序所需的所有功能。