使用jQuery更改输入字段的类型(text - > password)

时间:2011-06-19 12:59:01

标签: jquery html types input

我正在尝试更改输入类型,特别是点击输入后更改 type =“text”更改=“密码”

我不知道为什么,但我无法添加选项 type =“password”作为输入属性。

        $('input#id_reg_pass').removeAttr("type"); #this works, type="text" is removing
        $('input#id_reg_pass').attr('type', 'password'); #problem, this not works
        $(this).addClass('exampleText').val($(this).attr('title'));

有没有类似的问题?我很高兴每一个提示...... 谢谢

5 个答案:

答案 0 :(得分:13)

如果您使用的是jQuery 1.6,请改用.prop

$('input#id_reg_pass').removeAttr("type");
$('input#id_reg_pass').prop('type', 'password');
$(this).addClass('exampleText').val($(this).attr('title'));

演示:http://jsfiddle.net/z8Rj3/

答案 1 :(得分:6)

在将元素添加到DOM后,您无法更改属性type,如果您希望它在所有浏览器上以相同的方式运行,请参阅thisthis

  

自Microsoft Internet Explorer 5起,   type属性是read / write-once,   但仅限于输入元素   使用createElement方法创建   在它被添加到之前   文档。

答案 2 :(得分:5)

我有完全相同的问题,我想在密码字段中显示文本,直到用户点击它为止。我做了另一种方法,而不是试图改变我隐藏它的字段的类型并显示一个新的文本字段,然后调用focus()。它工作正常。

$("#password_fake").focus(){
    $(this).hide();
    $("#password").show().focus();
}

其中#password_fake是文本字段,#password是密码字段,样式=“display:none”。

答案 3 :(得分:1)

您的代码为我type property can't be changed引发了错误。有趣的是,以下代码至少在Chrome上对我有用:

$('input#id_reg_pass')[0].type = 'password';

然而,这可能不适用于跨浏览器,这可以解释为什么jQuery不允许它(正如Niklas指出的那样)。或者,您可以构造一个具有相同属性的新<input>,并用它替换旧的。{/ p>

答案 4 :(得分:0)

试试这个demo is here

$(document).delegate('input[type="text"]','click', function() {
    $(this).replaceWith('<input type="password" value="'+this.value+'" id="'+this.id+'">');
}); 
$(document).delegate('input[type="password"]','click', function() {
    $(this).replaceWith('<input type="text" value="'+this.value+'" id="'+this.id+'">');
});