【发布时间】:2013-07-16 07:53:15
【问题描述】:
出于可用性原因,我想在我的登录表单中添加一个复选框,允许用户 切换密码字段的屏蔽。
示例代码
我为此获得的基本代码如下(这是快速模型代码,未在 Chrome Canary 以外的任何其他工具中进行测试):
HTML
<input type="password" name="password" id="password" value="somepassword" />
<input type="checkbox" name="unmask" id="unmask" />
JavaScript
var password = document.getElementById('password'),
chkbox = document.getElementById('unmask');
chkbox.addEventListener('click', function (e) {
password.type = e.currentTarget.checked ? 'text' : 'password';
});
JSFiddle
虽然上述概念似乎运行良好,但当您查看将翻转 jQuery's source code 中的 type 属性的代码时,您会看到如下注释:-
// 我们不能允许改变类型属性(因为它会导致 IE 出现问题)
这增加了我在 StackOverflow 其他地方看到的类似引用...
从 Microsoft Internet Explorer 5 开始,type 属性是一次读/写,但仅限于使用 createElement 方法创建输入元素且在将其添加到文档之前。
...似乎表明上述代码不适用于 Internet Explorer。
我想知道的是;是这样吗?如果是这样,这只是 IE7/8 等的问题吗?是否有任何进一步的官方文档。
【问题讨论】:
-
> 是这样吗? 您似乎已经发现是这样的,不是吗?仅供参考,这是 jQuery 票:bugs.jquery.com/ticket/1957
-
@RoatinMarth 根据 MitchS 的评论,它似乎不是,它的反复无常所以想了解原因 - 感谢提供帮助的链接。
-
@IHateLazy 从 IE9 开始,这不再适用。
标签: javascript jquery internet-explorer cross-browser