1. ホーム
  2. ジャバスクリプト

[解決済み】jQueryで入力フィールドの種類を変更する。

2022-04-09 20:51:41

質問

$(document).ready(function() {
    // #login-box password field
    $('#password').attr('type', 'text');
    $('#password').val('Password');
});

を変更することになっています。 #password 入力フィールド( id="password" のものであること。 type password を通常のテキストフィールドに変換し、"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 .

編集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";