JQuery改变直到模糊才开始
我使用change(handler)来监听更改事件到textarea,但是我只在textarea失去焦点时收到一个事件,但是我希望一旦值发生变化就收到一个事件。
$("#text_object").change(listener); function listener(dom){ alert("I'm not getting here before the textarea loses focus"); }
不幸的是,当字段模糊时,浏览器只识别更改,因此您可能希望尝试附加keyup侦听器。 不幸的是,这不是最优雅的解决方案。
有关详细信息,请访问http://api.jquery.com/keyup/ 。
根据正确的答案,输入元素上的javascript更改事件仅在失去焦点时触发
你应该做这样的事情
$('#name').on('change textInput input', function () { });
你可以这样做。 只要确保你给textarea一个id标签
$(document).ready(function(){ $('.addtitle').keyup(function(event) { if(event.keyCode==13) { } }); });
在我的情况下,我在输入键上启动function(如facebooksfunction)。
编辑:如果你在页面上有多个textarea,你应该这样做:
$(document).ready(function(){ $('textarea[name=mynamevalue]').keyup(function(event) { if(event.keyCode==13) { } }); });
这是我做的:
/* Get the current value of the input and save it * in a data attribute before any change is made to it */ $(document).on('keydown','input', function(){ $(this).data('value',$(this).val()); }); /* Compare the values after the keyup event*/ $(document).on('keyup','input', function(){ if($(this).data('value') != $(this).val()){ console.log($(this).attr('name')); } });
因此,在keypress实际对其调用的元素进行任何修改之前,“keydown”事件被触发,“keyup”在触发之后。 所以我之前抓住了这个值并比较了之后的新值,然后如果有变化我会做任何事情。
我希望这有帮助
我为你创造了这个,它不是最优雅的解决方案,但它有效
JS:
HTML:
此脚本仅适用于特定的textarea,您可以更改它,或者您可以将val设置为文本输入数组。
我只是向你展示它背后的想法,使用x毫秒的setInterval来检查文本输入的值是否与val的值或你想要使用的任何变量名相同。 如果它们不匹配则表示它已被更改,如果它们匹配则表示没有任何改变。
希望这个对你有帮助。
但HTML5有解决方案
这个问题很老但它可以帮助像我这样的人;)
您可以在输入焦点事件中设置setInterval()并在模糊中清除此间隔以及相关function我认为这是自己捕获输入更改的好方法。
例:
var myInterval; $("#text_object").focus(function (event) { myInterval = setInterval(function () { listener(event); }, 100); }); $("#text_object").blur(function (event) { clearInterval(myInterval); }); function listener(event){ clearInterval(myInterval); alert("I'm not getting here before the textarea loses focus"); }
希望能帮助到你。
您可以在每次按键后强制模糊,以便立即有效地进行更改检查。
$myselector.on('change', function() { /*do something*/ }); $myselector.on('keyup', function() { $(this).blur(); $(this).focus(); });