2011-08-14 19 views
3

我正在構建一個_Widget,並且我想將一個onchange事件附加到整個表單中,以便一旦表單的某個字段被修改,就會啓用保存按鈕。dojo:如何將onchange事件連接到整個表單?

形式在_template

<form dojoAttachPoint='form'> 
    <input name='name' > 
    <button dojoAttachPoint="save">save</button> 
</form> 

我在_Widget

var self=this; 
dojo.connect(dijit.byId(this.form), 'onchange' ,function(){ 
    dijit.byId(self.save).setAttribute('disabled', false); 
    dojo.disconnect(dijit.byId(self.form)); 
}); 

試試我是在錯誤的軌道上?

回答

1

再次感謝Marcelo。

這現在工作:)

修改後的_template

<div dojoAttachPoint="sourceForm" dojoType="dijit.form.Form" 
    encType="multipart/form-data" action="" method=""> 

    <input dojoAttachPoint="name" dojoType="dijit.form.ValidationTextBox" 
      type="text" name="name" required="true"/>  
    <button 
     dojoAttachPoint="save" dojoType="dijit.form.Button" 
     type="submit" value="Submit" disabled="true"> 
     Save 
    </button> 
</div> 

修改後的_Widget部分

self=this; 
dijit.byId(this.save).setAttribute('disabled', true); 
var handle= dojo.connect(dojo.byId(this.sourceForm.domNode),'onchange',function() 
{ 
    dijit.byId(self.save).setAttribute('disabled', false); 
    dojo.disconnect(handle); 
}); 
2

您在非dijit節點上使用dijit.byId。您應該使用dojo.byId

另外,dojo.connect返回一個處理程序,它是您在調用dojo.disconnect函數時應該使用的處理程序。

+0

+1打開我的眼睛 – Zounadire

相關問題