jQuery:更改输入字段类型
此场景涉及尝试使用 jQuery 将输入字段的类型属性从密码更改为文本。然而,这一努力被证明是不成功的。
提供的代码,执行后:
$(document).ready(function() {<pre class="brush:php;toolbar:false">// #login-box password field $('#password').attr('type', 'text'); $('#password').val('Password');
});
旨在以 #password 字段为目标指定为密码的 type 属性并将其切换到标准文本字段。随后,它的目标是用文本“密码”填充更改后的字段。
但是,尽管代码存在,但预期结果未能实现。为什么?
问题的症结在于浏览器功能中的安全问题。更改输入字段的类型,特别是从密码等安全类型更改为常规类型,会触发浏览器实施的安全措施。这种情况经常在 Safari 等浏览器中观察到。
要解决此困境,建议使用裸 DOM(文档对象模型)的解决方法:
<br>var pass = document.createElement('input');<br>pass.type = '密码';<br>document.body.appendChild(pass);<br>pass.type = '文本';<br>pass.value = '密码';<br>
这种方法绕过了 jQuery 的限制,同时达到了预期的效果。
值得注意的是,直接修改通过 jQuery 的 type 属性在 IE 中遇到问题。 jQuery 的源代码揭示了这个约束:
<br>// 我们不能允许更改 type 属性(因为它会在 IE 中引起问题)<br>if ( name == "类型" && jQuery.nodeName( elem, "input" ) && elem.parentNode )<pre class="brush:php;toolbar:false">throw "type property can't be changed";
因此,当尝试使用 jQuery 将输入字段的类型从密码更改为文本并遇到困难时,建议使用原始 DOM上面概述的方法可以解决任何浏览器施加的安全限制。
以上是为什么使用 jQuery 将输入字段类型从密码更改为文本失败?的详细内容。更多信息请关注PHP中文网其他相关文章!