`

js动态修改input输入框的type属性及验证Email

 
阅读更多
需要实现的效果:一个输入框,当输入框未获得焦点的时候,value 值为 “密码”;当输入框失去焦点的时候,输入内容显示为”*****”
 
Html代码 复制代码 收藏代码
  1. <input name="password" type="text" id="showPwd" tabindex="2" class="input" value="密码" />  
<input name="password" type="text" id="showPwd" tabindex="2" class="input" value="密码" />
 
我们很直接会想到下面的js

Js代码 复制代码 收藏代码
  1. $("#showPwd").focus(function(){   
  2.     $(this).attr('type','password');   
  3. });  
$("#showPwd").focus(function(){
    $(this).attr('type','password');
});
 
发现并没有实现预期效果,出现 uncaught exception type property can’t be changed 错误,查看jQuery 1.42源码 1488 行
 
Js代码 复制代码 收藏代码
  1. // We can't allow the type property to be changed (since it causes problems in IE)   
  2. if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {   
  3.     jQuery.error( "type property can't be changed" );   
  4. }  
// We can't allow the type property to be changed (since it causes problems in IE)
if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
    jQuery.error( "type property can't be changed" );
}
 
jQuery 修改不了用源生的JS呢?
 

Js代码 复制代码 收藏代码
  1. $("#pwd").focus(function(){   
  2.     $("#pwd")[0].type = 'password';   
  3.     $("#pwd").val("");   
  4. });  
$("#pwd").focus(function(){
    $("#pwd")[0].type = 'password';
    $("#pwd").val("");
});
 
发现在FF下可以修改并将密码输入框type 修改为 “password” 并将 value设置为空,而IE下却提示无法得到type属性,不支持该命令。 弹出 type 看看真的无法得到吗?
 

Js代码 复制代码 收藏代码
  1. $("#showPwd").focus(function(){   
  2.     alert($("#showPwd")[0].type);   
  3.     $("#showPwd")[0].type = 'password';   
  4.     $("#showPwd").val("");   
  5. });  
$("#showPwd").focus(function(){
    alert($("#showPwd")[0].type);
    $("#showPwd")[0].type = 'password';
    $("#showPwd").val("");
});
 
发现弹出text ,原来不是无法得到,只是IE下不能修改。 因此,我们想到可以先remove然后再生成一个type是password的密码输入框。
 
下面type为password的输入框
 
Html代码 复制代码 收藏代码
  1. <input name="password" type="password" id="password" class="input" style="display: none;" />  
<input name="password" type="password" id="password" class="input" style="display: none;" />
 
Js代码 复制代码 收藏代码
  1. $("#showPwd").focus(function() {   
  2.         var text_value = $(this).val();   
  3.         if (text_value == this.defaultValue) {   
  4.             $("#showPwd").hide();   
  5.             $("#password").show().focus();   
  6.         }   
  7.     });   
  8.     $("#password").blur(function() {   
  9.         var text_value = $(this).val();   
  10.         if (text_value == "") {   
  11.             $("#showPwd").show();   
  12.             $("#password").hide();   
  13.         }   
  14.     });  
$("#showPwd").focus(function() {
		var text_value = $(this).val();
		if (text_value == this.defaultValue) {
			$("#showPwd").hide();
			$("#password").show().focus();
		}
	});
	$("#password").blur(function() {
		var text_value = $(this).val();
		if (text_value == "") {
			$("#showPwd").show();
			$("#password").hide();
		}
	});
 

最终效果: 当输入框获得焦点的时,输入的内容显示为“****”;当失去焦点的时,内容为空时显示“密码”。

 

 

 

实例代码:

<script type="text/javascript">
  function test(){
     $("#showPwd").focus(function() {  
        var text_value = $(this).val();  
        var defv = this.defaultValue;
       
       if (text_value == this.defaultValue) {
            $("#showPwd").hide();
            $("#password").show().focus();
        }
    });
    $("#password").blur(function() {
        var text_value = $(this).val();
        if (text_value == "") {
            $("#showPwd").show();
            $("#password").hide();
        }
    });
  }
 
  function checkValue(obj){
     if(obj.value==''){
       obj.style.display='none';
       document.getElementById('repassword_f').style.display='';
      
     }
  }
</script>

 

密码3:<input name="password" type="text" id="showPwd" tabindex="2" class="input" value="请输入密码" />
   <input name="password" type="password" id="password" class="input" style="display: none;" /> 

 

<br/><br/>
密码5:<input type="text" id="repassword_f" value="请输入密码" onclick="this.style.display='none';document.getElementById('repassword').style.display='';document.getElementById('repassword').focus();"/>
<input name="repassword" type="password" id="repassword" onblur="checkValue(this);" style="display:none"/>

分享到:
评论

相关推荐

    input输入框获取js点击文字内容.zip

    在"input输入框获取js点击文字内容.zip"这个压缩包中,我们可以预见到包含了一个简单的HTML页面(index.html),该页面可能实现了通过JavaScript来获取用户在输入框中输入的文字内容的功能。下面将详细介绍HTML5的`...

    web前端 input添加属性就可以验证 自动验证工具

    `&lt;input&gt;`元素是表单中用于接收用户输入的数据的基本组件,通过设置不同的`type`属性,如`text`、`email`、`password`等,可以定义不同的输入类型。在`input`元素上添加验证属性,可以实现在前端就对用户输入的数据...

    输入框input样式,各种效果齐全

    此外,还可以结合JavaScript实现动态效果,如验证输入内容、添加提示信息、禁用或启用输入框等。例如,以下代码用于检查用户名是否为空: ```javascript document.getElementById("username").addEventListener(...

    HTML5&CSS3网页制作:Input元素的type属性.pptx

    在HTML5中,`&lt;input&gt;`元素的`type`属性是一个非常重要的特性,它决定了输入框的功能和样式。通过设置不同的`type`属性值,我们可以创建各种类型的输入控件,以满足网页表单设计的需求。 1. **普通文本框(text)** ...

    Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)

    在AngularJS中,对input输入框进行限制,使其只能输入数字和小数点是一项常见的需求。这种需求通常用于财务或数量输入的场景,其中输入的格式要严格按照数字和小数点的要求来。本文将介绍一种推荐的AngularJS实现...

    vue 校验多个input框右侧提示

    在Vue应用中,处理表单验证是常见的需求,尤其是涉及多个input输入框时。VueValidate是一个专门为Vue设计的表单验证插件,它允许开发者轻松地实现对多个input框的同步校验,并在输入框右侧实时显示提示信息。 在Vue...

    js输入框自动加载邮箱提示

    这个输入框通常会有一个特定的`type="email"`属性,以确保浏览器提供电子邮件格式的验证提示。 ```html &lt;input type="email" id="emailInput" placeholder="请输入邮箱地址"&gt; ``` 接着,我们需要使用JavaScript来...

    input输入框鼠标焦点提示信息

    在这些框架中,你可以创建一个自定义组件,封装输入框及提示信息的逻辑,这样不仅可以统一处理所有输入框的提示,还可以轻松地添加其他交互效果,如验证、错误提示等。 总之,输入框的提示信息管理是网页表单设计中...

    js增加输入框

    当提到“js增加输入框”,我们通常指的是利用JavaScript来动态创建HTML元素,特别是`&lt;input&gt;`元素,这是一种让用户在网页上输入数据的标准方式。 一、HTML `&lt;input&gt;` 元素 HTML中的`&lt;input&gt;`元素是表单(`&lt;form&gt;`)...

    用Javascript验证email填写是否正确

    - 表单元素通过`&lt;form name="form1"&gt;`定义,包含了一个文本输入框`&lt;input type="text" name="tel"/&gt;`和一个按钮`&lt;input type="button" value="press" onclick="emailCheck()"/&gt;`。 - 当用户点击按钮时,会触发`...

    操作网页输入框.rar

    - **电子邮件输入框**(`&lt;input type="email"&gt;`):用于验证输入的格式是否符合电子邮件地址的标准。 - **数字输入框**(`&lt;input type="number"&gt;`):限制输入为数字,并可设置最小值和最大值。 - **日期选择框**...

    input元素的url类型和email类型简介

    在这个例子中,`&lt;input&gt;`元素的`type`属性被设置为`url`,表示这是一个用于输入URL的输入框。默认情况下,如果用户输入的不是有效的URL,表单提交时会被阻止。这样可以防止无效数据的提交,提高数据质量。 2. **...

    10 index(浏览文件、输入框).rar

    HTML中的`&lt;input&gt;`标签用于创建输入框,而不同的`type`属性(如"text"、"password"、"email"等)可以定义输入类型,以提供特定的验证和用户体验。此外,表单验证、CSS样式和JavaScript脚本常常被用来增强输入框的...

    jQuery插件集之(表单验证)各种input等验证+Demo

    本篇将详细讲解在jQuery环境下如何进行表单验证,以及一个实用的jQuery插件,它具备了各种input等验证功能,并支持ajax异步验证。 ### 1. jQuery表单验证基础 在jQuery中,我们可以利用事件监听器(如`submit`、`...

    html、js简单表单验证

    &lt;input type="email" name="email" pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"&gt; ``` 这些属性极大地简化了表单验证的实现,但它们的验证规则相对基础,对于更复杂的验证需求,我们通常会借助...

    js validate 非常强大的js验证框架

    &lt;input type="email" id="email" name="email" data-rule="required;email" data-msg="请输入有效的邮箱地址"&gt; ``` 然后在JavaScript中初始化验证器: ```javascript $(document).ready(function() { $("#myForm...

    带动画效果的CSS3 H5表单输入框验证代码.zip

    代码片段:  使用 :CSS3中的验证选择器 ...input type="email" class="exp__input" id="example2" name="test" placeholder="Email" required&gt;  " data-icon-ok=""&gt;Email   &lt;/div&gt;

    Bootstrap实现input控件失去焦点时验证

    Bootstrap 4引入了新的表单验证特性,通过添加`required`属性到`&lt;input&gt;`标签,可以开启浏览器内置的验证。当用户离开输入框且输入无效时,输入框会显示为红色边框,并显示`invalid-feedback`类中的错误信息。 3. *...

Global site tag (gtag.js) - Google Analytics