1. ホーム
  2. javascript

[解決済み] jQueryで入力を無効化/有効化する?

2022-03-15 12:44:57

質問

$input.disabled = true;

または

$input.disabled = "disabled";

どちらが標準的な方法なのでしょうか?また、逆に無効化された入力を有効にするにはどうすればいいのでしょうか?

解決方法は?

jQuery 1.6+

を変更するには disabled プロパティを使用する必要があります。 .prop() 関数を使用します。

$("input").prop('disabled', true);
$("input").prop('disabled', false);

jQuery 1.5以下

.prop() 関数は存在しませんが .attr() も同様です。

disabled属性を設定します。

$("input").attr('disabled','disabled');

再び有効にするには、適切な方法として .removeAttr()

$("input").removeAttr('disabled');

jQueryのどのバージョンでも

常に実際の DOM オブジェクトに依存することができ、ひとつの要素だけを扱うのであれば他のふたつの方法よりも少し速いでしょう。

// assuming an event handler thus 'this'
this.disabled = true;

を使用する利点は .prop() または .attr() メソッドを使用すると、選択された多数の項目に対してプロパティを設定することができます。


1.6では .removeProp() とよく似たメソッドです。 removeAttr() しかし、それは は使用しないでください。 のようなネイティブプロパティで 'disabled' ドキュメントからの抜粋です。

注意: このメソッドは、checked、disabled、selected などのネイティブプロパティを削除するために使用しないでください。これは、プロパティを完全に削除し、一度削除すると、要素に再び追加することはできません。これらのプロパティをfalseに設定するには、代わりに.prop()を使用してください。

実際、このメソッドの正当な使い道はあまりないと思います。boolean props は、1.5 の "attribute" のように "remove" する代わりに false に設定するような方法で行われています。