dojo:如何将onchange事件连接到整个表单?

时间:2011-08-14 19:45:38

标签: dojo

我正在构建一个_Widget,并且我希望将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));
});

我走错了路吗?

2 个答案:

答案 0 :(得分:2)

您在非dijit节点上使用dijit.byId。您应该使用dojo.byId

此外,dojo.connect会返回您在调用dojo.disconnect函数时使用的处理程序。

答案 1 :(得分:1)

再次感谢马塞洛。

这现在有效:)

修改后的_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);
});