代码之家  ›  专栏  ›  技术社区  ›  lionheart98

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

  •  6
  • lionheart98  · 技术社区  · 12 年前

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

    如果用户单击此输入字段 输入 事件不应该被激发(值实际上并没有改变;只是占位符消失了)。它在Firefox或Chrome中运行良好,但在IE中则不然。

    我该如何避免这种行为?

    为了更好地理解我在 jsfiddler

    2 回复  |  直到 12 年前
        1
  •  2
  •   Louis    11 年前

    防止这个问题的一种方法是存储字段的旧值,并在执行 实函数 你想在 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;
            }
        });
    });
    

    这样可以防止在字段不变时采取行动。

        2
  •  -1
  •   MoLow    11 年前

    尝试将其添加到输入事件中:

    if($(this).val() == $(this).get(0).defaultValue) return;