2011-01-11 61 views
5

我有一個使用dojo 1.5的表單設置。我正在使用一個dijit.form.ComboBox和一個dijit.form.TextBoxDojo:dojo onblur事件

Combobox具有像「汽車」,「自行車」,「摩托車」的值,並且該文本框旨在成爲Combobox的形容詞。 因此,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」,但可以有多個組合框和文本框按順序向上編號。 (vehicle_2,vehicle_3等)

任何意見或資源的鏈接將不勝感激。珍妮

回答

7

要添加你應該使用dojo.connect(onblur事件):

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

如果您有需要此連接到多個輸入,考慮增加一個自定義類爲那些需要模糊並使用dojo.query連接到所有的人:

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你可以在添加一些代碼剝離出來到底有多少,並用它來引用每個filter_value_功能*驗證輸入。

dojo.connect()

Combobox documention

4

onBlur似乎只是正常工作對我來說,即使是在HTML聲明的小部件。這裏是一個非常基本的例子:

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

(有螢火/ WebKit的檢查員/ IE8開發工具打開看的​​console.log消息。)

然而,對於這種更理想的解決方案,你可能也有興趣在其他一些部件...

希望這可以讓你開始。