jQuery を使用した入力フィールドの型の変更: 問題の再考
入力フィールドの型をパスワードからテキストに変更し、デフォルト値では、次の jQuery スニペットは不十分である可能性があります:
$(document).ready(function() { $('#password').attr('type', 'text'); $('#password').val('Password'); });
詳しく調べると、問題は多くの場合そのようなアクションを禁止しているブラウザのセキュリティ対策に起因することがわかります。
この制限を実証するには、次のことを考慮してください。次のスニペットは、パスワード入力フィールドを作成し、そのタイプをテキストに変更しようとします:
var pass = document.createElement('input'); pass.type = 'password'; document.body.appendChild(pass); pass.type = 'text'; pass.value = 'Password';
このシナリオでは、操作は問題なく成功します。ただし、jQuery ソース コードを検査すると、Internet Explorer に関連する特定のケースが見つかりました。
// 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";
これは、ブラウザのバグまたは Internet Explorer の意図的なセキュリティ機能である可能性を示唆しています。したがって、jQuery を介して入力フィールドのタイプを変更することは、すべての場合において信頼できる解決策であるとは限りません。
以上がjQuery で入力フィールドの型を確実に変更できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。