我遇到了输入文本类型(即文本框)的问题。
我在文本框上编写了 onkeyup
事件使用的函数。该行看起来像这样:
<input type='TEXT' value='abc' onkeyup='changeSomething( this );'>
但现在我面临的问题是,当用户从先前输入的值中选择值时, 当用户从下拉列表中选择任何先前输入的值时,我没有收到任何事件(编辑:我相信他在这里指的是浏览器自动完成)。
有人有解决办法吗? :)
最佳答案
使用onchange
而不是 onkeyup
在这种情况下
参见:http://www.w3schools.com/jsref/event_onchange.asp
例如
<input type='text' value='abc' onchange='changeSomething(this);' />
解决这个问题
编辑
两件事:
1) 可以使用箭头键和 enter/tab 以及使用鼠标来选择自动完成值。箭头键/enter.tab 触发 onkeyup 事件...但是,单击自动完成框不会触发 onclick 事件。
2) 如果内容已更改,一旦失去焦点,就会触发 onchange 事件。选择自动完成值时不会丢失焦点。
基本上,似乎没有任何方法可以合理地保证事件将按您希望的方式处理。
首先,你真的需要听每一次击键吗?
其次,关闭自动完成功能会更好吗?
(例如 <input type='text' value='abc' autocomplete='off' onkeyup='changeSomething(this);' />
)
关于Javascript 文本框事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001009/