2011-06-18 27 views
2

input[disabled=true]をjQueryでどのように動作させることができますか?入力[無効= true]とjQuery

http://jsfiddle.net/Bps9U/

+0

@Justin - 彼のjsfiddleは機能しません。彼はそれをとてもうまく説明していませんが、結果ボックスの両方の入力フィールドが黄色であることが必要です。それを修正する方法を説明するいくつかの答えがあります。 – Spudley

答えて

9

disabledは、boolean attributeであり、設定されていない状態は2つだけです。

次は全て等しい:

<input disabled="true"> 
<input disabled="disabled" /> 
<input disabled> 
<input disabled=""> 

あなたは$("input[disabled]")とすべてのバリアントを一致させることができます。

jQueryを使用すると、$(...).prop('disabled')の要素の状態を取得できます。これはブール値を返します。

+0

'.attr'と' .prop'はjQuery 1.6のどこかでクリーンアップされています。あなたの回答を更新してください(http://api.jquery.com/attr/) – Kos

+0

@Kos Updated。ちなみに、stackoverflowは[協力して管理されています](http://meta.stackoverflow.com/help/editing)ので、自分で回答を自由に編集してください。 – phihag

2

1).attr代わりに.propThe docs
2)

An example

編集としてコス点アウトコメントに(代わりに)trueの属性値としてdisabled文字列を使用することは、propはjQueryの1.6以降で有効な機能です。

+0

あなたがリンクしているドキュメントは次のようになります:* "フォーム要素のチェック、選択、無効状態などのDOMプロパティを取得して変更するには、** .prop()メソッド" **を使用します。 – Kos

+0

@Kosそれは正解でした。 –

+0

はい、そうだと思いますが、これはGoogle検索でも高いままです.SOはwikiです:-) – Kos

2

これはあなたの元のコードです:

まず、あなたが使用する必要がありますjQueryの機能は.attr()、ない.prop()次のとおりです。

$('<input class="inp" type="text" value="jquery" />').prop('disabled', true).appendTo('body'); 

このコードでは2つのバグがあります。

第2に、trueを文字列として設定する必要があります。これは、今のところ、使用する"true"と同じではないJavascriptブール値に設定しているためです。

しかし、disabled属性の正しい値は、disabled="disabled"ではなく、disabled"true"です。どちらもすべてのブラウザで動作しますが、前者は正しい値であるため、使用する必要があります。すべてのことを考えると

は、我々はこのように見えるようにコードを更新することができます。

$('<input class="inp" type="text" value="jquery" />').attr('disabled', 'disabled').appendTo('body'); 

...とdisabled="disabled"input.inp[disabled=disabled]を使用するようにHTMLとCSSを変更します。

(ちなみに、CSSもちょうどinput.inp[disabled]のように書くことができ、属性の任意の値のために働くことになる)

希望に役立ちます。

関連する問題