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

Posted

技术标签:

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

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

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

如何避免这种行为?

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

【问题讨论】:

在哪个版本的 IE 中会出现这种情况? @OLRAC 在 Windows 8 上运行的 IE10 中 所以你是说你的问题是占位符? ***.com/questions/574941/… -我认为这个链接会对你有所帮助.. 这是一个 IE 10/11 错误:connect.microsoft.com/IE/feedback/details/810538/… 【参考方案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,我会创建一个问题

以上是关于在 IE 中的占位符上触发 jQuery 输入事件的主要内容,如果未能解决你的问题,请参考以下文章

占位符 Internet Explorer 11 未显示

如何在延迟加载期间在图像占位符上显示“加载”gif图像

输入占位符脚本适用于没有 JQuery 的 IE 8 密码字段?

IE 中的占位符

使用 jQuery 在 IE 的 Javascript 中以编程方式触发事件

使用 IE9、jquery 插件/html 验证的占位符问题