gpt4 book ai didi

javascript - 文本输入控件中任何文本更改的正确 javascript 事件是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:54 25 4
gpt4 key购买 nike

每当输入控件中的文本发生变化时,我都需要立即更新一些内容。但我似乎无法为此找到正确的事件。

  • onchange 仅在您离开输入框(即离开 Tab 键或单击外部)时触发。

  • onkeypress 更改发生之前触发,并且在任何键按下时触发(例如,左右光标不会导致任何文本更改)

  • onkeydown 和 onkeyup 也触发任何键(甚至像 Shift 等,不会导致任何文本更改)

此外,当用鼠标右键单击 + 从剪贴板粘贴时,这些似乎都不会触发。或者在 JS 中更改值时(即从其他地方执行 input.value = something)。

最小示例:http://jsfiddle.net/nggAm/

我该怎么办?我想我可能解决这个问题的一种方法(嗯,主要是)是将所有事件设置为一个通用事件处理程序,在那里缓存值,并且只在字符串更改时进行实际更新。但这感觉有点蹩脚。这样做的正确方法是什么?

最佳答案

对于旧版浏览器,您确实需要设置输入的 onkeyup、onchange 和 onpaste。

但是较新的浏览器有 oninput,这是你希望每个浏览器都有的。

您可以设置所有事件,然后在 oninput 触发时删除除 oninput 之外的所有内容。

(但是如果您退格或删除字符,IE9 会在传递输入事件时出现问题,因此只为该浏览器保留按键事件。)

示例代码——将所有事件定向到一个处理程序,如果 oninput 触发则移除

F.text1.oninput= function(){
F.text1.onpaste= F.text1.onchange= null;
if(!document.documentMode) F.text1.onkeyup= null;
F.text1.oninput= F.limiter;
return F.limiter();
}
F.text1.onpaste= function(){
setTimeout(F.limiter, 100);
}
F.text1.onkeyup= F.text1.onchange= F.limiter;

关于javascript - 文本输入控件中任何文本更改的正确 javascript 事件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10310265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com