我正在尝试更改输入类型,特别是点击输入后更改 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'));
有没有类似的问题?我很高兴每一个提示...... 谢谢
答案 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'));
答案 1 :(得分:6)
在将元素添加到DOM后,您无法更改属性type
,如果您希望它在所有浏览器上以相同的方式运行,请参阅this和this。
自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+'">');
});