在IE中的占位符上触发的jQuery输入事件

lio*_*t98 5 html jquery internet-explorer input placeholder

我有一个输入字段,其中input绑定了一个事件(通过jQuery).每次输入值更改时都应触发此事件.我添加了一个占位符来告诉用户此输入字段的用途.

如果用户单击此输入字段,则input不应触发事件(该值实际上不会更改;只是占位符消失).它适用于Firefox或Chrome,但不适用于IE.

我该如何避免这种行为?

为了更好地理解我在jsfiddler上的问题

Lou*_*uis 2

防止该问题的一种方法是存储字段的旧值并在执行处理程序中要执行的实际功能input之前对其进行检查。这就是我在我的一个应用程序中修复它的方法。

例如:

$(document).ready(function () {
    var $input = $("#input");
    var $msg = $("#msg");
    var old_value = $input.val();
    $input.on("input", function () {
        var new_value = $input.val();
        if (new_value !== old_value) {
            // The actual work we want to perform when the field *really* changes.
            $msg.text(new_value.length);
            old_value = new_value;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这可以防止在磁场没有变化时采取行动。