在编辑表单时使用Dojo重新启用提交按钮

时间:2011-03-12 17:24:01

标签: dojo onchange dijit.form

我正在尝试使用Dojo构建一个Web应用程序。我有一个表单,通过Dojo的xhrPost功能将数据发布到服务器端程序,只要用户点击“保存”按钮,就可以保存对表单所做的更改。我想要做的是在成功保存后禁用保存按钮,直到下一次在任何表单的字段中更改某些内容,以避免重复尝试保存未更改的文档。

我尝试让Dojo的活动观看功能观察变化,但没有成功。旨在触发重新启用保存按钮的事件从不做任何事情。这是我试过的:

eventWatching.push(dojo.connect(dijit.byId('editForm'), 'onChange', function() { dijit.byId('saveButton').set('disabled', false); }));

使用onKeyPress而不是onChange似乎很有希望,但是当单独使用鼠标编辑表单时,这显然没有重新启用按钮。

2 个答案:

答案 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)
})