1

我正在尝试处理一个令人沮丧的 Internet Explorer 问题,该问题阻止我将jquery-validatejquery-placeholder结合使用。简而言之,验证不适用于带有type=password.

更多信息在这里

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

有什么聪明的html//技巧可以让字段显示为s 吗jscsstextpassword

4

3 回答 3

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" />

因此,这将允许您验证与密码相同的隐藏输入。

于 2013-06-17T15:44:21.233 回答
1

我能想到的第一个“hack”是将“data-changed”属性添加到 input="password" 字段,然后将“onchange”事件附加到设置“data-changed”== true 的密码字段,这样您就可以验证值“密码”是否实际上是由用户输入的(data-changed == true),或者它是否由占位符插件本身提交。

于 2013-06-17T15:44:05.350 回答
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');
    }
});
于 2013-06-17T15:54:14.473 回答