jQuery で入力フィールドのタイプを変更する: 機能しない理由
入力フィールドをパスワードのタイプからパスワードのタイプに変更しようとしたときjQuery を使用してテキスト タイプを使用すると、変更が有効にならないという問題が発生する可能性があります。
問題のコードは次のとおりです:
$(document).ready(function() { // #login-box password field $('#password').attr('type', 'text'); $('#password').val('Password'); });
このコードは、入力フィールドを ID で変更することを目的としています。 「パスワード」をテキストフィールドに入力し、「パスワード」というテキストを入力します。ただし、ブラウザのセキュリティ モデルが原因で失敗する可能性があります。
Safari でテストすると、type プロパティを変更できないことを示すエラーが表示されます。これは、次のチェックを含む jQuery ソース コードでもサポートされています。
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) throw "type property can't be changed";
このチェックは、Internet Explorer の入力フィールドの type プロパティが変更されるのを防ぎます。これがバグなのか、それともセキュリティ設計上の選択なのかは不明です。
この問題を解決するには、jQuery の代わりにネイティブ DOM 操作を使用できます。方法は次のとおりです。
var pass = document.createElement('input'); pass.type = 'password'; document.body.appendChild(pass); pass.type = 'text'; pass.value = 'Password';
このコードは、入力フィールドをテキスト タイプに変更し、指定された値を入力します。
以上がjQuery で入力フィールドの「タイプ」をパスワードからテキストに変更できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。