2015-09-23 18 views
9

を有効にして明示的にボタンを設定したいと思います。その理由は、後で私のコードがボタンを無効に切り替え、コードがクラッシュするか、ボタンが無効になることがあるからです。HTMLの明示的にdisabled = "false"が設定されていません

私は

$("#btn").attr("disabled","true") 

でボタンを無効にすることができますが、その後含むHTML:

<button id="btn" disabled="false">I want to be enabled!</button> 

はまだ無効とボタンを示しています。 検査官が示しています

<button id="btn" disabled="">I want to be enabled!</button> 

を私は

$("#btn").removeAttr("disabled") 

または同様の操作を行うことができます知っているが、HTMLでの多くの要素のためにそれを行うには便利ではありません。

+1

_ "しかし、htmlの多くの要素に対してはこれを行うのは便利ではありません" _なぜですか? – Xufox

答えて

19

HTMLは、驚くほどブール値の属性にブール値を使用しません。

HTMLでは、ブール値の属性は、単に属性名を追加するか、属性名を値として使用して(特にXHTMLで)指定します。

<input type="checkbox" disabled>     <!-- HTML --> 
<input type="checkbox" disabled />    <!-- Also HTML --> 
<input type="checkbox" disabled="disabled" /> <!-- XHTML and HTML --> 

これは、HTML仕様書に記載されています:http://www.w3.org/TR/html5/infrastructure.html#boolean-attribute

属性の数はブール属性です。要素のブール値属性の存在は真の値を表し、属性の不在は偽の値を表します。

"true"と "false"の値はブール値属性では使用できません。偽の値を表現するには、属性を省略する必要があります。

+0

ありがとうございました。しかし、無効を省略しても、無効にすることはできません(私が必要とするものです)。 www.google.comで要素を無効にして、ページを再読み込みしました。その要素はまだ無効です。 – aless80

+0

@ aless80ページを再読み込みした後、要素を無効にしてはいけません。何してるの? – Dai

+0

私はあなたにシナリオを与えます。私はfirefoxを使用しています。 1)ボタンが無効のときに私のウェブページが実行を停止したとします(バグ、デバッグ中、ページを更新したため)。ページをリフレッシュすると(ハードリフレッシュではない)、ボタンは無効になります。このため、htmlで無効にすることをお勧めします。 申し訳ありませんが、上記のgoogle.comについて書いたことを無視してください。 – aless80

3

あなたは角度を使用している場合は、代わりにng-disabledを試してみてください。この場合、あなたのようなものを使用することができます。

ng-disabled="true" 
ng-disabled="false" 
ng-disabled={{expression}} 

と期待どおりに動作します...

+0

常に覚えておいてください! – coderade

2

著しい答えがないので、私はこれが古いトピックです知っているが、このヘルプはいますか?これは、明示的にマークされた有効な質問に答えます。

<button enabled>My Text</button> 
<!-- Which also works as: --> 
<button enabled="enabled">My Text</button> 

また、検証時にボタンを有効にするためにこれを調べています。私はこれが誰かを助けることを望む。

+0

はい、私の投稿はかなり古く、私はもう問題を再現できません(コードクラッシュなどのために無効なボタンが表示されます)。ページを起動したときにボタンが無効になっている場合の例を見つけて、有効にすると有効にしてもよろしいですか? – aless80

+0

私は実際に両方のタグでそれをテストしませんでした。興味深いことに、disabledタグが含まれていると、enabledはそれを有効にしません。それは、優先順位が障害状態になるようです。もちろん、元のコードの問題がどのようなものかはっきりと分かりませんが、1つの変数に対して有効または無効をプログラムで設定することは可能です。 '

2

今後、誰かを助けることができます。

selectLanguage.onchange = function() 
    { 
     var value = selectLanguage.value; 
     if (value != '') { 
      submitLanguage.removeAttribute('disabled'); 
     } else { 
      submitLanguage.setAttribute('disabled', 'disabled'); 
     } 
     // submitLanguage.setAttribute('enabled', 'enabled'); 
    } 
関連する問題