我正在构建一个_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));
});
我走错了路吗?
答案 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);
});