Использование Dojo для включения кнопки отправки при редактировании формы - PullRequest
0 голосов
/ 12 марта 2011

Я пытаюсь создать веб-приложение, используя Dojo. У меня есть форма, которая отправляет данные через возможности Dojo xhrPost в серверную программу, которая сохраняет изменения, внесенные в форму, всякий раз, когда пользователь нажимает кнопку «Сохранить». То, что я хотел бы сделать, это отключить кнопку сохранения после успешного сохранения, пока в следующий раз что-то не будет изменено в любом из полей формы, чтобы избежать повторных попыток сохранить неизмененный документ.

Я пытался, чтобы функция отслеживания событий Dojo отслеживала изменения, но безуспешно. Событие, предназначенное для повторного включения кнопки сохранения, никогда ничего не делает. Вот что я попробовал:

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

Использование onKeyPress вместо onChange показалось многообещающим, но это (очевидно) не включало кнопку, когда форма редактировалась только с помощью мыши.

Ответы [ 2 ]

3 голосов
/ 14 марта 2011

До 1.6, я не думаю, что dijit.form.Form соединяет своих детей onChange с их собственным, поэтому, вероятно, ваша идея onChange не сработала.

В Dojo 1.6, чтоВы можете легко просить об этом, воспользовавшись тем, что виджеты теперь наследуют функциональность dojo.Stateful:

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

В версии 1.5 или ниже это может потребовать некоторой работы;Я не могу придумать легкий путь от моей головы, но, возможно, у кого-то есть идея, или кто-то ударит меня позже.

Вы можете найти код, отвечающий за подключение onChange и значение-смотреть функциональность в 1.6 можно здесь:

0 голосов
/ 27 мая 2011

Если новое значение равно emptyString, форма действительна.

frm1.watch('state',function(property, oldvalue, newvalue) {
 console.log(newvalue)
})
...