使用jQuery/JavaScript检测文本输入框中的更改

5
在HTML和JavaScript中,我可以使用keyup、focus和blur来检测文本输入框中的大多数内容更改。然而,如果用户将内容复制并粘贴到文本输入框中,我该如何捕获这个更改呢?问题在于当用户粘贴内容时,输入框已经处于焦点状态。
3个回答

4

1
太好了!不过,遗憾的是,在所有浏览器中都不支持粘贴,尤其是 FF3。 - user121196

4
$("#myinput").change(function(){
    // whatever you need to be done on change of the input field
});

// Trigger change if the user type or paste the text in the field
$("#myinput").keyup(function(){
    $(this).change();
});

// if you're using a virtual keyboard, you can do :
$(".key").live('click',function(){
    $("#myinput").val($("#myinput").val()+$(this).val());
    $("#myinput").change(); // Trigger change when the value changes
});

更改事件仅在您离开该输入字段时触发,而不是在每个按键按下时触发。 keyup 很混乱,因为如果您按 tab 键,则会在下一个元素上触发事件,即您将转到的元素(至少在firefox 5.0中是如此)!另外,您是说粘贴时会触发keyup事件吗?只有当您通过键盘粘贴而不是从浏览器上下文菜单中粘贴时才正确。 - ThatGuy

3
文本框具有OnChange事件,当文本框失去焦点且文本框内的值已更改时触发。

不幸的是,这对于粘贴操作不起作用,因为当用户将内容粘贴到文本框中时,焦点并没有丢失。 - user121196
你捕捉的不是粘贴操作,而是当用户离开文本框时值已被修改的事实。 - Stephen Wrighton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接