使用 jQuery 更改输入字段的类型:为什么它可能不起作用
尝试将输入字段从密码类型修改为密码类型时使用 jQuery 的文本类型,您可能会遇到更改未生效的问题。
这是有问题的代码:
$(document).ready(function() { // #login-box password field $('#password').attr('type', 'text'); $('#password').val('Password'); });
此代码旨在更改带有 id 的输入字段将“password”添加到文本字段,然后用文本“Password”填充它。但是,由于浏览器的安全模型,它可能会失败。
在 Safari 中测试显示错误,指示类型属性无法更改。 jQuery 源代码也支持这一点,其中包含一个检查:
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) throw "type property can't be changed";
此检查可防止更改 Internet Explorer 中输入字段的类型属性。目前尚不清楚这是一个错误还是安全设计选择。
要解决此问题,您可以使用本机 DOM 操作而不是 jQuery。操作方法如下:
var pass = document.createElement('input'); pass.type = 'password'; document.body.appendChild(pass); pass.type = 'text'; pass.value = 'Password';
此代码将成功将输入字段更改为文本类型并用指定的值填充它。
以上是为什么我无法使用 jQuery 将输入字段的'类型”从密码更改为文本?的详细内容。更多信息请关注PHP中文网其他相关文章!