0

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

我尝试让 Dojo 的事件监视功能监视更改,但没有成功。旨在触发重新启用保存按钮的事件从不执行任何操作。这是我尝试过的:

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

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

4

2 回答 2

3

在 1.6 之前,我不认为dijit.form.Form将其子代onChange与自己的连接起来,这可能是您的onChange想法不起作用的原因。

在 Dojo 1.6 中,利用小部件现在继承dojo.Stateful功能这一事实可以轻松实现您的要求:

form.watch('value', function(property, oldvalue, newvalue) {
    /* ... */
});

在 1.5 或更低版本中,这可能需要一些工作;我想不出一个简单的方法,但也许其他人有一个想法,或者稍后会打我。

您可以在此处找到负责连接onChange1.6 中的值监视功能的代码: https ://github.com/dojo/dijit/blob/master/form/_FormMixin.js#L396-429

于 2011-03-14T18:26:50.350 回答
0

如果 newvalue 为 emptyString,则表单有效。

frm1.watch('state',function(property, oldvalue, newvalue) {
 console.log(newvalue)
})
于 2011-05-27T06:37:01.903 回答