使用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中文網其他相關文章!