jQuery文本框更改事件

时间:2011-05-26 14:09:55

标签: jquery

文本输入元素没有更改事件吗?当我将更改事件处理程序附加到文本输入时,它不会被触发。键盘被触发,但是键盘不足以检测更改,因为显然有其他方法可以将文本输入到输入中。

6 个答案:

答案 0 :(得分:28)

<input> element的HTML4规范指定了以下脚本事件:

  

onfocus,onblur,onselect,onchange,   onclick,ondblclick,onmousedown,   onmouseup,onmouseover,onmousemove,   onmouseout,onkeypress,onkeydown,   的onkeyup

这是一个绑定所有这些事件的示例,并显示http://jsfiddle.net/pxfunc/zJ7Lf/

上发生了什么

我认为您可以过滤掉与您的情况真正相关的事件,并检测事件之前和之后的文本值以确定更改

答案 1 :(得分:22)

我发现这有效:

$(document).ready(function(){
    $('textarea').bind('input propertychange', function() {
        //do your update here
    }

})

答案 2 :(得分:14)

更改事件仅在输入失去焦点(并且已更改)后触发。

答案 3 :(得分:4)

对此没有真正的解决方案 - 即使在上面给出的其他问题的链接中也是如此。最后我决定使用setTimeout并调用每秒检查一次的方法!不是一个理想的解决方案,但是我正在调用的解决方案和代码很简单,不会因为一直被调用而对性能产生影响。

function InitPageControls() {
        CheckIfChanged();
    }

    function CheckIfChanged() {
        // do logic

        setTimeout(function () {
            CheckIfChanged();
        }, 1000);
    }

希望这可以帮助将来的某个人,因为似乎没有使用事件处理程序来实现这一点的确定方法......

答案 4 :(得分:2)

你可以实现它:

 $(document).ready(function(){              
     $('#textBox').keyup(function () {alert('changed');});
 });

或更改(右键单击处理复制粘贴):

 $(document).ready(function(){              
     $('#textBox2').change(function () {alert('changed');});
 });

这是Demo

答案 5 :(得分:0)

$('#input').on("input",function () {alert('changed');});

适合我。