jQuery で入力フィールドの「タイプ」をパスワードからテキストに変更できないのはなぜですか?

Linda Hamilton
リリース: 2024-11-16 05:08:03
オリジナル
612 人が閲覧しました

Why Can't I Change an Input Field's 'type' from Password to Text with jQuery?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート