在 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 输入事件的主要内容,如果未能解决你的问题,请参考以下文章
输入占位符脚本适用于没有 JQuery 的 IE 8 密码字段?