输入元素上的 JavaScript 更改事件仅在失去焦点时触发
我有一个输入元素,我想继续检查内容的长度,每当长度等于特定大小时,我想启用提交按钮,但我面临着 Javascript 的 onchange 事件作为事件的问题仅当输入元素超出范围时触发,而不是在内容更改时触发。
<input type="text" id="name" onchange="checkLength(this.value)" />
----onchange 不会在更改名称内容时触发,而仅在名称失去焦点时触发。
我可以做些什么来使该活动在内容更改上发挥作用吗?或者我可以为此使用其他一些事件? 我通过使用 onkeyup 函数找到了一种解决方法,但是当我们从浏览器的自动完成器中选择某些内容时,该方法不会触发。
我想要一些可以在字段内容发生变化(无论是通过键盘还是通过鼠标)时起作用的东西......有什么想法吗?
I have an input element and I want to keep checking the length of the contents and whenever the length becomes equal to a particular size, I want to enable the submit button, but I am facing a problem with the onchange event of Javascript as the event fires only when the input element goes out of scope and not when the contents change.
<input type="text" id="name" onchange="checkLength(this.value)" />
----onchange does not fire on changing contents of name, but only fires when name goes out of focus.
Is there something I can do to make this event work on content change? or some other event I can use for this?
I found a workaround by using the onkeyup function, but that does not fire when we select some content from the auto completer of the browser.
I want something which can work when the content of the field change whether by keyboard or by mouse... any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
这将捕获
更改
、击键、粘贴
、textInput
、输入
(如果可用)。并且不要开超过必要的火。http://jsfiddle.net/katspaugh/xqeDj/
参考文献:
< a href="http://www.w3.org/TR/DOM-Level-3-Events/#event-type-textinput" rel="noreferrer">
textInput
— W3C DOM Level 3 事件类型。 http://www.w3.org/TR/DOM- 3 级事件/#events-texteventsinput
— HTML5 事件类型。Firefox、Chrome、IE9 和其他现代浏览器都支持它。
This will catch
change
, keystrokes,paste
,textInput
,input
(when available). And not fire more than necessary.http://jsfiddle.net/katspaugh/xqeDj/
References:
textInput
— a W3C DOM Level 3 event type. http://www.w3.org/TR/DOM-Level-3-Events/#events-texteventsinput
— an HTML5 event type.Firefox, Chrome, IE9 and other modern browsers support it.
我花了 30 分钟才找到它,但这是在 2019 年 6 月运行的。
如果你想在 js 中以编程方式添加事件监听器
It took me 30 minutes to find it, but this is working in June 2019.
and if you want to add an event listener programmatically in js
作为 katspaugh 答案的扩展,这里有一种使用 css 类对多个元素执行此操作的方法。
As an extention to katspaugh's answer, here's a way to do it for multiple elements using a css class.
以 jQuery 方式进行操作:
Do it the jQuery way:
您可以使用 onkeyup
You can use onkeyup
如果您想捕获所有可能性,则必须结合使用
onkeyup
和onclick
(或onmouseup
)。You would have to use a combination of
onkeyup
andonclick
(oronmouseup
) if you want to catch every possibility.这是我针对同一问题开发的另一个解决方案。不过,我使用了许多输入框,因此我将旧值保留为元素本身的用户定义属性:“数据值”。使用 jQuery 非常容易管理。
这里,我使用了 5-6 个具有“filterBox”类的输入框,
仅当 data-value 与其自身值不同时,我才运行 filterBy 方法。
Here is another solution I develop for the same problem. However I use many input boxes so I keep old value as an user-defined attribute of the elements itself: "data-value". Using jQuery it is so easy to manage.
here is, I used 5-6 input boxes have class 'filterBox',
I make filterBy method run only if data-value is different than its own value.