【问题标题】:jQuery input event fired on placeholder in IE在 IE 中的占位符上触发 jQuery 输入事件
【发布时间】:2013-10-17 20:05:27
【问题描述】:

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

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

如何避免这种行为?

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

【问题讨论】:

标签: jquery html internet-explorer input placeholder


【解决方案1】:

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

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

【讨论】:

    【解决方案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;
            }
        });
    });
    

    这可以防止在字段未更改时进行操作。

    【讨论】:

    • 如何防止那个输入事件阻止其他事件?我有一个点击出价的链接,该输入事件正在停止该链接:(用户抱怨他们必须在 IE 中单击两次,而在其他浏览器中可以正常工作。
    • @Azimuth 我从来没有遇到过点击被忽略的问题。答案中的代码只监听input 事件,这对click 事件的处理方式没有影响。听起来您可能有新问题的材料。
    • @Louis yepp,我会创建一个问题
    猜你喜欢
    • 2014-02-19
    • 2018-06-16
    • 2016-03-13
    • 2012-05-07
    • 2013-09-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多