jQuery文本框更改事件

jcv*_*dan 22 jquery

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

Mik*_*keM 29

<input>元素的HTML4规范指定以下脚本事件可用:

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

这是一个绑定所有这些事件的例子,并显示了正在发生的事情http://jsfiddle.net/pxfunc/zJ7Lf/

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


Pow*_*Ian 22

我发现这有效:

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

})
Run Code Online (Sandbox Code Playgroud)


ven*_*aur 14

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

  • 如果您真的想知道任何文本何时发生变化,几乎就像它发生变化一样,那么您就不能轮询输入.也就是说,使用setInterval和一个函数,该函数将输入的当前值与先前存储的值进行比较(通过一些范围高于函数的变量).如果两个值不匹配,则发生更改.然后,将当前值存储到另一个变量中以进行下一次检查. (3认同)

jcv*_*dan 4

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

function InitPageControls() {
        CheckIfChanged();
    }

    function CheckIfChanged() {
        // do logic

        setTimeout(function () {
            CheckIfChanged();
        }, 1000);
    }
Run Code Online (Sandbox Code Playgroud)

希望这对将来的人有所帮助,因为似乎没有可靠的方法可以使用事件处理程序来实现这一目标......