2014-10-10 86 views
0

我有一個文本框,當輸入文本時,它會啓用一個按鈕。但是,當用戶選擇自動填充文本填充文本框時,該事件不會被觸發。Dojo抓住自動完成的事件

on(dom.byId('Textbox1'), 'keyup', function (event) { 
         if ((dom.byId('Textbox2').value.length > enable) && (dom.byId('Textbox1').value.length > 0)) { 
          domClass.remove(dom.byId('button'), 'disabled'); 
          dom.byId('button').disabled = false; 
         }; 
        }); 

我希望不需要輪詢解決方案。我可能要做的就是使用鼠標移動事件...

回答

0

您可以添加'更改'事件偵聽器。

var action = function(){   
    alert('fire'); 
}; 

on(registry.byId("login.username"), "change", action); 
on(registry.byId("login.username"), "keyup", action); 

看到我的工作fiddle


你的代碼也很糟糕。你想使用Dojo,但不要利用它。當你想使用一個值時,你必須使用.get('value');方法。要獲得小部件,您必須使用dijit/registry而不是dojo/dom

+0

不幸的是,這不適合我。我必須保留我的asp:textbox對象,並且不能將它們轉換爲輸入type = text而不會炸燬其他代碼... – flux9998 2014-10-13 17:18:13

+0

你能告訴我你的完整代碼嗎?通常'asp:textbox'會被轉換爲''。 – GuyT 2014-10-14 06:31:29

+0

是的,你是對的,但他們在一個asp:登錄控制。如果我將它們轉換爲input type = text,那麼在後面的代碼中,它們是HtmlInputText,它在asp中使用時:Login控件拋出異常。我可以讓更改或關鍵事件觸發。這是當表單控件自動完成時,我無法捕捉事件。我正在尋找一種使用Dojo的新穎解決方案。 – flux9998 2014-10-14 17:27:36