JQuery:检测input字段中的变化
可能重复:
jquery:如何检测文本框的内容已经改变
我想要检测用户的键盘动作何时改变文本字段的值。 它应该在现代浏览器中一致工作。
.keypress事件的JQuery页面显示它不一致? 另外,它不适用于退格,删除等。
我不能使用.keydown,因为它反应了shift,alt和方向键等等。另外,当用户按住一个键并插入多个字符时,它不会多次触发。
有没有一个简洁的方法我错过了? 还是应该使用.keydown并过滤掉由箭头键触发的事件,轮class等? 我主要担心的是会有我不知道应该被过滤的键。 (我几乎忘了ALT和CTRL,我想可能有其他人)但是,那么我将如何检测按住键并插入多个字符?
作为奖励,它会检测粘贴(包括右键单击)的变化,但我从这里有解决scheme。
您可以将“input”事件绑定到文本框。 这会在每次input改变时触发,所以当你粘贴一些东西时(即使是右击),删除并input任何东西。
$('#myTextbox').on('input', function() { // do something });
如果您使用change
处理程序,则只会在用户取消selectinput框之后触发,而这可能不是您想要的。
这里有一个例子: http : //jsfiddle.net/6bSX6/
我最近用下面的函数实现了同样的function。
我想在编辑时启用保存button。
- 更改事件是不可取的,因为只有在编辑之后,鼠标才会在点击SAVEbutton之前在页面的其他地方被点击。
- 按键不处理退格键,删除和粘贴选项。
- 按键处理包括选项卡,Shift键在内的所有内容。
因此,我写下面的函数结合按键,键入(用于退格,删除)和粘贴事件的文本字段。
希望它可以帮助你。
function checkAnyFormFieldEdited() { /* * If any field is edited,then only it will enable Save button */ $(':text').keypress(function(e) { // text written enableSaveBtn(); }); $(':text').keyup(function(e) { if (e.keyCode == 8 || e.keyCode == 46) { //backspace and delete key enableSaveBtn(); } else { // rest ignore e.preventDefault(); } }); $(':text').bind('paste', function(e) { // text pasted enableSaveBtn(); }); $('select').change(function(e) { // select element changed enableSaveBtn(); }); $(':radio').change(function(e) { // radio changed enableSaveBtn(); }); $(':password').keypress(function(e) { // password written enableSaveBtn(); }); $(':password').bind('paste', function(e) { // password pasted enableSaveBtn(); }); }
使用jQuery的更改事件
说明:将事件处理程序绑定到“更改”JavaScript事件,或在元素上触发该事件。
一个例子
$("input[type='text']").change( function() { // your code });
.keypress
, .focus
, .blur
是.change
事件只会在input发生变化时触发
你可以使用jQuery的change()函数
$('input').change(function(){ //your codes });
有关如何在API页面上使用它的示例: http : //api.jquery.com/change/
使用$.on()
将你select的事件绑定到input,不要使用像$.keydown()
等快捷键,因为从jQuery 1.7开始, $.on()
是附加事件处理程序的首选方法(请参见: http://api.jquery.com/on/和http://api.jquery.com/bind/ )。
$.keydown()
只是$.bind('keydown')
一个快捷方式, $.bind()
是$.on()
replace的内容。
为了回答你的问题,据我所知,除非你需要在keydown
特别keydown
一个事件,否则change
事件应该为你做窍门。
$('element').on('change', function(){ console.log('change'); });
为了响应下面的评论,javascript change
事件logging在这里: https : //developer.mozilla.org/en-US/docs/Web/Events/change
下面是使用jQuery处理input元素的change
事件的一个工作示例: http : //jsfiddle.net/p1m4xh08/