我正在尝试使用Dojo构建一个Web应用程序。我有一个表单,通过Dojo的xhrPost功能将数据发布到服务器端程序,只要用户点击“保存”按钮,就可以保存对表单所做的更改。我想要做的是在成功保存后禁用保存按钮,直到下一次在任何表单的字段中更改某些内容,以避免重复尝试保存未更改的文档。
我尝试让Dojo的活动观看功能观察变化,但没有成功。旨在触发重新启用保存按钮的事件从不做任何事情。这是我试过的:
eventWatching.push(dojo.connect(dijit.byId('editForm'), 'onChange', function() { dijit.byId('saveButton').set('disabled', false); }));
使用onKeyPress而不是onChange似乎很有希望,但是当单独使用鼠标编辑表单时,这显然没有重新启用按钮。
答案 0 :(得分:3)
在1.6之前,我认为dijit.form.Form
不会将其子onChange
与其自己的onChange
连接起来,这可能是您的dojo.Stateful
想法不起作用的原因。
在Dojo 1.6中,通过利用小部件现在继承form.watch('value', function(property, oldvalue, newvalue) {
/* ... */
});
功能这一事实,您可以轻松获得所需要的内容:
onChange
在1.5或更低时,这可能需要一些工作;想不出一个简单的方法,但也许别人有一个想法,或者一个人会打我以后。
您可以在此处找到负责联系1.6中{{1}}和价值观看功能的代码:https://github.com/dojo/dijit/blob/master/form/_FormMixin.js#L396-429
答案 1 :(得分:0)
如果newvalue为emptyString,则表单有效。
frm1.watch('state',function(property, oldvalue, newvalue) {
console.log(newvalue)
})