$(document).ready(function() { // #login-box password field $('#password').attr('type', 'text'); $('#password').val('Password'); });
这应该将#password输入字段(带id="password")更改type password为普通文本字段,然后填写文本“密码”。
#password
id="password"
type
password
不过,它不起作用。为什么?
这是表格:
<form enctype="application/x-www-form-urlencoded" method="post" action="/auth/sign-in"> <ol> <li> <div class="element"> <input type="text" name="username" id="username" value="Prihlasovacie meno" class="input-text" /> </div> </li> <li> <div class="element"> <input type="password" name="password" id="password" value="" class="input-text" /> </div> </li> <li class="button"> <div class="button"> <input type="submit" name="sign_in" id="sign_in" value="Prihl谩si钮" class="input-submit" /> </div> </li> </ol> </form>
作为浏览器安全模型的一部分,很可能会阻止此操作。
编辑:确实,现在在 Safari 中进行测试,我得到了错误type property cannot be changed。
type property cannot be changed
编辑 2:这似乎是直接来自 jQuery 的错误。使用以下直接 DOM 代码就可以了:
var pass = document.createElement('input'); pass.type = 'password'; document.body.appendChild(pass); pass.type = 'text'; pass.value = 'Password';
编辑 3:直接来自 jQuery 源,这似乎与 IE 有关(并且可能是错误或他们的安全模型的一部分,但 jQuery 不是特定的):
// We can't allow the type property to be changed (since it causes problems in IE) if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) throw "type property can't be changed";