2011-01-11 7 views
5

dojo 1.5でフォームをセットアップしました。私はdijit.form.ComboBoxとdijit.form.TextBoxを使用していますDojo:dojo onblur events

Comboboxは "car"、 "bike"、 "motorcycle"のような値を持ち、テキストボックスはComboboxの形容詞を意味します。 それは何がコンボボックスにあるかは関係ありませんが、ComboBoxに値がある場合、TextBoxに何かを記入しなければなりません。オプションで、ComboBoxに何もない場合、TextBoxに何も入れることはできません。実際、何かがコンボボックスになければ、テキストボックスには何も入っていないはずです。

通常のコーディングでは、テキストボックスのonBlurイベントを使用して、ComboBoxに値があるかどうかを確認する関数に移動します。私はこれが動作しないことを道場で見...コード例は以下の通りです...

Vehicle: 
    <input dojoType="dijit.form.ComboBox" 
     store="xvarStore" 
     value="" 
     searchAttr="name" 
     name="vehicle_1" 
     id="vehicle_1" 
    /> 
Descriptor: 
<input type="text" 
       dojoType="dijit.form.TextBox" 
       value="" 
       class=lighttext 
       style="width:350px;height:19px" 
       id="filter_value_1" 
       name="filter_value_1" 
       /> 

私の最初の試みは、記述子の<入力>タグ内にonBlurイベントを追加することでしたが、それが動作しないことを発見しました。

Dojoはどのようにこれを処理しますか?それはdojo.connectパラメータ経由ですか?上記の例では、コンボボックスのidが "vehicle_1"、テキストボックスのIDが "filter_value_1"であっても、コンボボックスやテキストボックスの番号は順番に上になります。 (車両2、車両3など)

リソースへのアドバイスやリンクがあれば幸いです。 Janie

答えて

7

あなたは(dojo.connect使うべきonBlurイベントを追加するには):あなたはこれを接続するために必要な複数の入力を持つ

dojo.connect(dojo.byId("vehicle_1"), "onBlur", function() { /* do something */ }); 

場合は、ぼかすする必要があるもののためにカスタムクラスを追加することを検討そしてそれらのすべてに接続するためにdojo.queryを使用して:

あなたが最後に番号を取り除くためにいくつかのコードを追加し、各filter_value_を参照するためにそれを使用することができますdojo.connectに渡される関数で
Vehicle: 
    <input dojoType="dijit.form.ComboBox" 
     store="xvarStore" 
     class="blurEvent" 
     value="" 
     searchAttr="name" 
     name="vehicle_1" 
     id="vehicle_1" 
    /> 

dojo.query(".blurEvent").forEach(function(node, index, arr) { 
     dojo.connect(node, "onBlur", function() { /* do something */ }); 
    }); 

*検証のための入力。

dojo.connect()

Combobox documention

4

onBlurでもHTML-宣言ウィジェットでは、私のためにうまく動作するようです。ここでは非常に初歩的な例です:

http://jsfiddle.net/kfranqueiro/BWT4U/

(にconsole.logメッセージを表示するために開い放火魔/ WebKitのインスペクタ/ IE8 devのツールを持っている。)

をしかし、これまでより理想的なソリューションのために、あなたは可能性がありますまた、いくつかの他のウィジェットに興味がある...

うまくいけば、これであなたを始められます。