js动态修改input输入框的type属性(实现方法解析)


Posted in Javascript onNovember 13, 2013

需要实现的效果:一个输入框,当输入框未获得焦点的时候,value 值为 “密码”;当输入框失去焦点的时候,输入内容显示为”*****”

<input name=”password” type=”text” id=”showPwd” tabindex=”2″ class=”input” value=”密码” />

我们很直接会想到下面的js

$(“#showPwd”).focus(function(){
$(this).attr(‘type','password');
});

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

// 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呢?

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

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

$(“#showPwd”).focus(function(){
alert($(“#showPwd”)[0].type);
$(“#showPwd”)[0].type = ‘password';
$(“#showPwd”).val(“”);
});

发现弹出text ,原来不是无法得到,只是IE下不能修改。 因此,我们想到可以先remove然后再生成一个type是password的密码输入框。

下面type为password的输入框

<input name=”password” type=”password” id=”password” class=”input” style=”display: none;” />

$(“#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();
}
});

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

Javascript 相关文章推荐
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
可以将word转成html的js代码
Apr 11 Javascript
jQuery中实现动画效果的基本操作介绍
Apr 16 Javascript
jQuery拖动图片删除示例
May 10 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
Sep 16 Javascript
JS中多种方式创建对象详解
Mar 22 Javascript
jQuery实现的表格展开伸缩效果实例
Sep 07 Javascript
JS奇技之利用scroll来监听resize详解
Jun 15 Javascript
Angularjs自定义指令实现分页插件(DEMO)
Sep 16 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
Sep 01 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
Nov 11 Javascript
js字母大小写转换实现方法总结
Nov 13 #Javascript
jQuery替换字符串(实例代码)
Nov 13 #Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 #Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
Nov 13 #Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
Nov 12 #Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
Nov 12 #Javascript
屏蔽script注入小例子
Nov 12 #Javascript
You might like
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
PHP中PDO基础教程 入门级
2011/09/04 PHP
php猜单词游戏
2015/09/29 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
在视频前插入广告
2006/11/20 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
element中的$confirm的使用
2020/04/26 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python set常用操作函数集锦
2017/11/15 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
小车司机岗位职责
2013/11/25 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
端午节活动策划方案
2014/03/09 职场文书
公司任命书范本
2014/06/04 职场文书
集体生日活动方案
2014/08/18 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
副总经理岗位职责
2015/02/02 职场文书
2015年采购员工作总结
2015/04/27 职场文书
python process模块的使用简介
2021/05/14 Python
pytorch实现手写数字图片识别
2021/05/20 Python
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS