Jqueryvalidation与占位符Polyfill不兼容?

我目前正在使用Mathias Bynens的Placeholder Polyfill和jquery.validate插件(v1.11.1),并且遇到了Internet Explorer 9令人沮丧的错误。

如果我们的type="password"字段定义了非空placeholder属性,则无法获得必要的字段validation。 输入值并且占位符文本消失后,剩余的validation工作正常。

可以在此处找到此代码的现场演示

JS

 $('input').placeholder(); // init placeholder plugin signupFormValidator = $('form').validate(); // init validation 

HTML

 



编辑:此修复程序在Firefox中引入了错误。 请看下面的评论。


为了解决这个问题,我最终使用了一些我自己烘焙的相当hacky的jQuery:

 $('#password, #confirm').keyup(function() { var $input = $(this); if ($input.attr('type') === 'text') { if ($input.val().length > 0) { $input.attr('type', 'password'); } } else if ($input.val() === "") { $input.attr('type', 'text'); } }); 

这是做什么,将字段type设置为“文本”而不​​是“密码”,有效地清除了那个讨厌的占位符问题。

次要问题:当开始在输入中输入文本时,密码的第一个字符会短暂显示为纯文本。