2011-07-20 10 views
0

myCodeの値がselCode(ドロップダウンから選択された値)の場合、ボタンを無効にする必要がある、dojoで小さな問題を解決しようとしています。私はここでどこが間違っていますか?
Example特定のドロップダウン値のボタンを無効にする

var myCode = "CC"; 

dojo.addOnLoad(function() { 
    dojo.connect(dojo.byId('#codes'), "onchange", function(evt) { 
     var selCode = this.val(); 
     if (selCode == myCode) { 
      dojo.attr('#submit', disabled); 
     } 
     dojo.stopEvent(evt); 
    }); 
}); 

<select name="codes" id="codes" class="codes"> 
    <option selected="selected" value="">Select Below</option> 
    <option value="AA">AA</option> 
    <option value="BB">BB</option> 
    <option value="CC">CC</option> 
    <option value="DD">DD</option> 
</select> 

答えて

1

まあ道場は、同じメソッドを持っていない限り、私は、道場について何も知りませんが、あなたはjQueryのメソッド.val().attr()を使用しようとしているよう確認してくださいに見えています。 (私は彼らのためにドキュメントを見つけることができませんでした。)

次のように働くだろうネイティブAPIのライブラリのコードを放棄:

var myCode="CC"; 

dojo.addOnLoad(function() { 
    dojo.connect(dojo.byId('#codes'), "onchange", function(evt) { 
     var selCode = evt.target.options[evt.target.selectedIndex].value; 
     if(selCode == myCode){ 
      document.getElementById('submit').disabled = true; 
     } 
     dojo.stopEvent(evt); 
    }); 
}); 

例:http://jsfiddle.net/BmSjb/21/


EDIT:以下のコメントに基づいて、一致する選択に基づいてトグルします。

var myCode = "CC"; 

dojo.addOnLoad(function() { 
    dojo.connect(dojo.byId('#codes'), "onchange", function(evt) { 
     var selCode = evt.target.options[evt.target.selectedIndex].value; 
     document.getElementById('submit').disabled = (selCode == myCode); 
     dojo.stopEvent(evt); 
    }); 
}); 

例:http://jsfiddle.net/BmSjb/32/

は今.disabledプロパティはselCode == myCodeの結果に設定されますので、それは無効になりますときtruefalseを有効にする。

+0

ありがとうございました。私はそれを受け取ります。 – t0mcat

+0

1つの問題は、ドロップダウンの値が何かに戻ってもボタンを無効にしたままにします – t0mcat

+0

@ t0mcat:これは元に戻すことを知らないためです。私は更新します。 – user113716

3

2つの問題: 1. Dojoは、そのようなCSSセレクタを使用しません。 #を使用しないでください。 2. attr関数は3つのパラメータ(実行したいとき)をとります:id/dojoObj、attr name、attr value。

var myCode="CC";  
dojo.addOnLoad(function() { 
    dojo.connect(dojo.byId('codes'), "onchange", function(evt) { 
     if(this.value == myCode){ 
     dojo.attr('submit', 'disabled', 'disabled'); 
     } 
     dojo.stopEvent(evt); 
    }); 
}); 
+0

ありがとうジョシュ、私はあなたの答えを前に参照してください。私はjQueryで働いています。したがって、CSSセレクタの習慣:) – t0mcat

+0

+1 Dojoについてのことはわかりませんので、もっとネイティブな答えを出しました。元のセレクタが 'select'要素の代わりに' window'を返すように見えるので、これはもっと正しいでしょう。 – user113716

+0

心配はいりません。私はそれを提出して少し遅かった。私は他のすべてのフレームワークに対してjQueryを好む。私の道場の経験は限られています。あなたがレガシーアプリケーションを維持することを学ぶこと... – Josh

関連する問題