zoukankan      html  css  js  c++  java
  • JS 动态修改 input 的 type 属性

    JS 动态修改 input 的 type 属性
    调用: $(“#uname”);可选参数class为获取焦点时input的class,但是清除密码的时候出了一个问题,用户输入的密码应该是 ”*****”,这里需要将input 的type 属性由 text 换成 password ,如果用户没有输入密码,鼠标失去焦点的时候 type换回 text ,value 值为 “密码”。
     
    [javascript] view plaincopy
     
    1. $("#pswd").focus(function(){  
    2.    $(this).attr('type','password');  
    3. });  
    发现并没有实现预期效果,出现 uncaught exception type property can’t bechanged 错误,查看jQuery 1.42源码 1488 行

    [javascript] view plaincopy
     
    1. // We can't allow the type property to be changed (since itcauses problems in IE)  
    2. if ( name === "type" &&rtype.test( elem.nodeName ) &&elem.parentNode ) {  
    3.    jQuery.error( "type property can't be changed");  
    4. }  
     
    jQuery 修改不了用源生的JS呢?

    [javascript] view plaincopy
     
    1. $("#pwd").focus(function(){  
    2.    $("#pwd")[0].type = 'password';  
    3.    $("#pwd").val("");  
    4. });  
     
    发现在FF下可以修改并将密码输入框type 修改为 “password” 并将value设置为空,而IE下却提示无法得到type属性,不支持该命令。 弹出 type 看看真的无法得到吗?
     
    [javascript] view plaincopy
     
    1. $("#pwd").focus(function(){  
    2.    alert($("#pwd")[0].type);  
    3.    $("#pwd")[0].type = 'password';  
    4.    $("#pwd").val("");  
    5. });  
     
    发现弹出text ,原来不是无法得到,只是IE下不能修改。 各种 google后发现input的type属性只能在初始的时候设定却不能修改(IE不能,FF可以,个人认为,不知道是否准确,如有不对请大牛指教)。这样我是否可以先remove然后再生成一个type是password的密码输入框呢?

    [javascript] view plaincopy
     
    1. $("#pwd").focus(function(){  
    2.    $("#pwd").remove();  
    3.    $("body").append('<input id="pwd"name="pwd" type="password" />');  
    4.    $("#pwd").focus(); // 焦点转移  
    5. );  

    可以实现,但是输入为空鼠标失去焦点再返回到起始状态的时候不怎么好写,节点生成删除为什么不用两个密码框来显示隐藏呢?
     
    [html] view plaincopy
     
    1. <input id="showPwd" class="txt" type="text" value="密码" tabindex="2" />  
    2. <input id="pwd" class="txt" name="password" type="password" />  
    [javascript] view plaincopy
     
    1. var showPwd = $("#showPwd"), pwd = $("#pwd");  
    2. showPwd.focus(function(){  
    3.    pwd.show().focus();  
    4.    showPwd.hide();  
    5. });  
    6.   
    7. pwd.blur(function(){  
    8.    if(pwd.val()=="") {  
    9.        showPwd.show();  
    10.        pwd.hide();  
    11.     }  
    12. });  
  • 相关阅读:
    Linux makefile教程之概述一[转]
    Valid Parentheses
    Letter Combinations of a Phone Number
    机器学习经典分类算法 —— C4.5算法(附python实现代码)
    3Sum Closest
    3Sum
    Integer to Roman
    寒假文献阅读(四)
    Longest Common Prefix
    Roman to Integer
  • 原文地址:https://www.cnblogs.com/liwon/p/3561343.html
Copyright © 2011-2022 走看看