我可以将<input type =“text”/>看作<input type =“password”/>吗?

时间:2013-06-17 15:28:03

标签: javascript css validation passwords

我正在尝试处理令人沮丧的Internet Explorer问题,导致我无法将jquery-validatejquery-placeholder结合使用。简而言之,验证不适用于type=password的字段。

More info Here

我提出的一个可能的解决方法是将我的密码修改为type=text,但这当然会以纯文本而不是*******显示密码。

是否有任何聪明的html / js / css技巧可以使text字段显示为password个?

3 个答案:

答案 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');
    }
});