我正在尝试处理令人沮丧的Internet Explorer问题,导致我无法将jquery-validate与jquery-placeholder结合使用。简而言之,验证不适用于type=password
的字段。
我提出的一个可能的解决方法是将我的密码修改为type=text
,但这当然会以纯文本而不是*******
显示密码。
是否有任何聪明的html
/ js
/ css
技巧可以使text
字段显示为password
个?
答案 0 :(得分:2)
所以你可能会设置这样的东西。
具有模拟密码值的隐藏输入类型
所以我猜jquery明智的是
//everytime the password changes hidden changes with it.
$('#passwordId').change(function() {
$('#hiddenID').val() = $('#passwordId').val();
});
HTML:
<input type="password" id="passwordId" />
<input type="hidden" id="hiddenID" />
因此,这将允许您验证隐藏的输入,该输入与密码的值相同。
答案 1 :(得分:1)
我能想到的第一个“hack”是将“data-changed”属性添加到input =“password”字段,然后将“onchange”事件附加到设置“data-changed”=的密码字段中= true,这样您就可以验证用户实际输入的值“password”(data-changed == true),或者是否由占位符插件本身提交。
答案 2 :(得分:1)
虽然这些答案正在进行中,但我有了自己的顿悟。乍一看,它似乎工作。我会查看其他答案并接受任何看起来最好的方法,并且最不“hacky”。
当我发现问题仅在字段为空(仍有占位符文本)时存在时,我想出了这种方法,因此,只会不通过“必需”验证。我的修复是在输入内容时将其更改为type=password
。
我的方法:
$('#password, #password_confirm').keyup(function(){
if ($(this).attr('type') === 'text') {
if ($(this).val().length > 0) {
$(this).attr('type', 'password');
}
} else if ($(this).val() == "") {
$(this).attr('type', 'text');
}
});