jQuery的文本框更改事件不会触发,直到文本框失去焦点?
我发现,文本框上的jQuery更改事件不会触发,直到我单击文本框之外。
HTML:
<input type="text" id="textbox" />
JS:
$("#textbox").change(function() {alert("Change detected!");});
在JSFiddle上查看演示
我的应用程序需要在文本框中的每个字符更改时触发事件。 我什至尝试使用键盘,而不是…
$("#textbox").keyup(function() {alert("Keyup detected!");});
…但是这是一个众所周知的事实,即在右键单击并粘贴的情况下,键盘事件不会被触发。
任何解决方法? 两个听众是否会造成任何问题?
绑定到这两个事件是这样做的典型方法。 您也可以绑定到粘贴事件。
你可以像这样绑定到多个事件:
$("#textbox").on('change keyup paste', function() { console.log('I am pretty sure the text box changed'); });
如果你想琢磨一下,你还应该绑定到mouseup,以便拖拽文本,并添加一个lastValue
variables来确保文本实际上已经改变:
var lastValue = ''; $("#textbox").on('change keyup paste mouseup', function() { if ($(this).val() != lastValue) { lastValue = $(this).val(); console.log('The text box really changed this time'); } });
如果你想super duper
迂腐,那么你应该使用间隔计时器来迎合自动填充,插件等:
var lastValue = ''; setInterval(function() { if ($("#textbox").val() != lastValue) { lastValue = $("#textbox").val(); console.log('I am definitely sure the text box realy realy changed this time'); } }, 500);
在现代浏览器上,您可以使用input
事件 :
DEMO
$("#textbox").on('input',function() {alert("Change detected!");});
if you write anything in your textbox, the event gets fired. code as follows :
HTML:
<input type="text" id="textbox" />
JS:
<script type="text/javascript"> $(function () { $("#textbox").bind('input', function() { alert("letter entered"); }); }); </script>
$(this).bind('input propertychange', function() { //your code here });
这是用于打字,粘贴,鼠标右键粘贴等工作。
尝试这个:
$("#textbox").bind('paste',function() {alert("Change detected!");});
在JSFiddle上查看演示 。
尝试下面的代码:
$("#textbox").on('change keypress paste', function() { console.log("Handler for .keypress() called."); });
阅读你的意见,使我到一个肮脏的修复。 我知道这不是一个正确的方法,但可以是一个解决方法。
$(function() { $( "#inputFieldId" ).autocomplete({ source: function( event, ui ) { alert("do your functions here"); return false; } }); });