可能重复:Jquery:如何检测文本框的内容已更改
我想检测用户的键盘操作何时改变文本字段的值 . 它应该在现代浏览器中一致地工作 .
.keypress事件的JQuery页面说它不一致?此外,它不适用于退格,删除等 .
我不能使用.keydown,因为它会对shift,alt和箭头键等作出反应 . 此外,当用户按住某个键并插入多个字符时,它不会多次触发 .
有没有简洁的方法我错过了?或者我应该使用.keydown并过滤掉由箭头键,移位等触发的事件?我主要担心的是,我不知道应该过滤掉的密钥 . (我差点忘了alt和ctrl,我想可能还有其他人)但是那时我怎样才能检测到按下的键并插入多个字符?
作为奖励,它会检测由于粘贴(包括右键单击)引起的更改,但我从here获得了解决方案 .
5 回答
您可以将'input'事件绑定到文本框 . 这将触发 every time 输入更改,因此当您粘贴某些内容(即使右键单击)时,删除并键入任何内容 .
如果使用
change
处理程序,则只有在用户取消选择输入框后才会触发,这可能不是您想要的 .这里有一个例子:http://jsfiddle.net/6bSX6/
我最近使用以下功能实现了相同的功能 .
我想在编辑时启用SAVE按钮 .
更改事件是不可取的,因为只有在编辑后才会触发,在单击“保存”按钮之前单击页面上的其他位置鼠标 .
按键不处理退格键,删除键和粘贴选项 .
Key Up处理包括Tab键,Shift键在内的所有内容 .
因此,我在下面写了一个功能,结合了按键,键盘(用于退格键,删除)和文本字段的粘贴事件 .
希望它能帮到你 .
使用jquery change event
一个例子
.change
优于.keypress
,.focus
,.blur
的优点是.change
事件仅在输入发生变化时才会触发使用
$.on()
将您选择的事件绑定到输入,不要使用$.keydown()
等快捷方式,因为从jQuery 1.7开始$.on()
是附加事件处理程序的首选方法(请参阅此处:http://api.jquery.com/on/和http://api.jquery.com/bind/) .$.keydown()
只是$.bind('keydown')
的快捷方式,$.bind()
是$.on()
取代的(等等) .要回答你的问题,据我所知,除非你需要专门在
keydown
上发射一个事件,否则change
事件应该为你做好准备 .要回复以下评论,请在此处记录javascript
change
事件:https://developer.mozilla.org/en-US/docs/Web/Events/change以下是使用jQuery处理输入元素的
change
事件的工作示例:http://jsfiddle.net/p1m4xh08/您可以使用jQuery change()函数
有关如何在API页面上使用它的示例:http://api.jquery.com/change/