ie8下修改input的type属性报错

摘要:

  现在有一个需求如图所示,当用户勾选显示明文复选框时,要以明文显示用户输入的密码,去掉勾选时要变回密文,刚开始想到的就是修改输入框的type来决定显示明文还是密文,使用jQuery的attr来做试验,测试结果是chrome,Firefox,ie9+都是好的,在ie8以下就会报错,查找了下原因,ie8中是不允许修改input的type属性,最终换了种思路实现。

当勾选显示明文时替换输入框为type="text",不勾选时在将输入框替换为type="password",代码如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 6     <script src="http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js"></script>
 7 </head>
 8 <body>
 9     <span id="pass"><input name="password" type="password"></span><label><input type="checkbox" id="show-password">显示明文</label>
10     <script>
11         $(‘#show-password‘).click(function() {
12             var inp,cname,val;
13             if(this.checked) {
14                 inp   = $(‘#pass‘).children(‘input‘);
15                 cname = inp.attr(‘name‘);
16                 val   = inp.val();
17                 $(‘#pass‘).html(‘<input name="‘+cname+‘" value="‘+val+‘" type="text">‘);
18             } else {
19                 inp   = $(‘#pass‘).children(‘input‘);
20                 cname = inp.attr(‘name‘);
21                 val   = inp.val();
22                 $(‘#pass‘).html(‘<input name="‘+cname+‘" value="‘+val+‘" type="password">‘);
23             }
24         });
25     </script>
26 </body>
27 </html>

总结:

  这篇文章并没有什么技术含量,但是这种交互还是存在的,写这篇文章主要还是考虑到ie8以下兼容性问题。如果你的项目中也有这种交互可以参考下,或者你有更好的方法可以和我一起分享。

时间: 2025-01-16 18:30:14

ie8下修改input的type属性报错的相关文章

JQuery中如何动态修改input的type属性

代码如下: 1 jQuery(".member_id").focus(function() { 2 jQuery(this).val(''); 3 }).blur(function() { 4 5 if(jQuery(this).val() == "") { jQuery(this).val("账号"); } 6 }); 7 8 jQuery(".member_passwd").focus(function() { 9 jQu

jauery改变inout的type属性报错type property can’t be changed

uncaught exception type property can't be changed 使用代码$("#pwd").attr("type","password")时出现上面的错误. 猜测是该版本jQuery不允许修改控件type属性,使用原生js语句可以解决这个问题. [javascript] view plain copy $("#txtpwd").focus(function () { if ($(this).

js修改input的type属性问题(兼容所有浏览器,主要用于密码类的默认有提示文字的效果)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>阿当制

jquery改变input的type属性

今天在做一个登录页面时,当我把input的type属性值设置为password后,input的默认值被“*”替换(图一),导致输入框不能正常提示用户输入信息,代码如下: 1 <input type="password" class="text-input fs pass" value="请输入密码"> (图一) 如果把密码输入框的type属性更改为text后,不利于密码输入时的保密性.所以需要在密码输入框获得焦点时通过jquery的a

html5 input的type属性启动数字输入法

html5 input的type属性启动数字输入法 当文本框只能输入数字是一个很常见的需求,比如电话号码,身份证号,卡号, 数量....等等只允许数字输入,为了更好的用户体验性,直接写出 启动数字键盘的需求,我和大多数人一样用   this.style.imeMode='disabled'; imeMode有四种形式,分别是: active 代表输入法为中文inactive 代表输入法为英文auto 代表打开输入法 (默认)disable 代表关闭输入法 发现在Android手机上是不行的. 解

解决Ext4.2.3中propertyGrid修改后点击排序报错

Ext4.2.3中PropertyGrid修改后点击排序报错,具体错误信息如下: 一开始还怀疑是自己哪里配置错了,各种尝试结果还是一样.查遍百度和谷歌,无果,只有一篇帖子说是4.2.4修正了.还是自己动手吧,自己动手丰衣足食. 点开报错地方(如下图所示),原来是me.field.column没有定义. 然后继续找,找啊找啊找到Ext.grid.property.Grid的getCellEditor方法.此方法有参数column,可在方法体内,column就没有被用到过,于是就感觉问题出在这里.

解决Win7下运行php Composer出现SSL报错的问题

以前都在linux环境使用php composer.今天尝试在win7下运行composer却出现SSL报错: D:\data\www\mmoyu\symapp>php -f %phprc%\composer install Loading composer repositories with package information [Composer\Downloader\TransportException] The "https://packagist.org/packages.js

CentOS5.6下安装Oracle10G软件(包含报错经验)

CentOS5.6下安装Oracle10G ******************************************************************************** *目标:在Centos系统下,安装Oracle10g软件 *步骤: *                1.安装包 *                2.域名解析设置及网络配置 *                3.创建用户.组 *                4.配置内核参数.修改环境变量

Ubuntu下sh *.sh使用==操作符执行报错

----<鸟哥的Linux私房菜--基础篇>学习笔记 ubuntu默认的sh是连接到dash,而我们写shell脚本时使用的时bash.bash和dash在一些方面是不兼容的.因此执行同一个脚本,两者结果不一样,可能用./*sh可以执行,而sh *.sh报错. 为了正确实行使用./*.h 或者  bash *.sh  或者把==换成=(不兼容部分) 也可以直接让系统不使用dash....Ubuntu之所以使用dash是因为其体积小,兼容性高,但是悲催的时,一些bash可执行的脚步在dash下不