JS 动态修改 input 的 type 属性

JS 动态修改 input 的 type 属性
调用: $(“#uname”);可选参数class为获取焦点时input的class,但是清除密码的时候出了一个问题,用户输入的密码应该是 ”*****”,这里需要将input 的type 属性由 text 换成 password ,如果用户没有输入密码,鼠标失去焦点的时候 type换回 text ,value 值为 “密码”。

$("#pswd").focus(function(){
   $(this).attr('type','password');
});

发现并没有实现预期效果,出现 uncaught exception type property can’t bechanged 错误,查看jQuery 1.42源码 1488 行

// We can't allow the type property to be changed (since itcauses problems in IE)
if ( name === "type" &&rtype.test( elem.nodeName ) &&elem.parentNode ) {
   jQuery.error( "type property can't be changed");
}

 
jQuery 修改不了用源生的JS呢?

$("#pwd").focus(function(){
   $("#pwd")[0].type = 'password';
   $("#pwd").val("");
});

 
发现在FF下可以修改并将密码输入框type 修改为 “password” 并将value设置为空,而IE下却提示无法得到type属性,不支持该命令。 弹出 type 看看真的无法得到吗?

$("#pwd").focus(function(){
   alert($("#pwd")[0].type);
   $("#pwd")[0].type = 'password';
   $("#pwd").val("");
});
 
发现弹出text ,原来不是无法得到,只是IE下不能修改。 各种 google后发现input的type属性只能在初始的时候设定却不能修改(IE不能,FF可以,个人认为,不知道是否准确,如有不对请大牛指教)。这样我是否可以先remove然后再生成一个type是password的密码输入框呢?

$("#pwd").focus(function(){
   $("#pwd").remove();
   $("body").append('<input id="pwd"name="pwd" type="password" />');
   $("#pwd").focus(); // 焦点转移
);

可以实现,但是输入为空鼠标失去焦点再返回到起始状态的时候不怎么好写,节点生成删除为什么不用两个密码框来显示隐藏呢?

<input id="showPwd" class="txt" type="text" value="密码" tabindex="2" />
<input id="pwd" class="txt" name="password" type="password" />

var showPwd = $("#showPwd"), pwd = $("#pwd");
showPwd.focus(function(){
   pwd.show().focus();
   showPwd.hide();
});

pwd.blur(function(){
   if(pwd.val()=="") {
       showPwd.show();
       pwd.hide();
    }
});

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值