ExtJS - грязная проверка формы работает только в первый раз - PullRequest
0 голосов
/ 19 апреля 2011

Я делаю грязную проверку перед отправкой формы редактирования данных. Это работает в первый раз после загрузки формы, но если я отправляю форму один раз, грязная проверка перестает работать при последующих вызовах.

if(editForm.getForm().isDirty()) {
    editForm.getForm().submit( {
        url:'app/update',
        waitMsg:'Saving data',
        success:function(form,action) {
              Ext.Msg.alert("Success", "Successfully updated");
        },
        failure: function(form,action) {
              Ext.Msg.alert("Failure", "Failed to update");
        }
    });
} else {
    Ext.Msg.alert("Message", "Nothing has been changed since you last saved.");
}

Ответы [ 4 ]

5 голосов
/ 04 октября 2013

Это сработало для меня. Я добавил это после успешной отправки формы.

form.getForm().getFields().each(function(field){
   field.resetOriginalValue( );
});
5 голосов
/ 19 апреля 2011

Это потому, что ваша форма сравнивает значения полей с начальными значениями полей.

Вы можете использовать метод reset() для сброса формы после отправки.Если вам нужно предоставить пользователям возможность продолжить редактирование в той же форме, вы можете перезагрузить форму с последними данными, используя метод loadRecord().Или вам придется использовать свойство trackResetOnLoad.Установите для этого свойства значение true.

2 голосов
/ 21 февраля 2012

Вы смотрели на свойство Ext.form.Panel trackResetOnLoad?Попробуйте установить его в true, указав editForm.trackResetOnLoad = true;это может помочь.Удачи!

0 голосов
/ 19 февраля 2013

Я знаю, что это старый пост, но я решил поделиться другим решением.

Метод isDirty () проверяет исходные значения. После сохранения значений (в вашей функции обратного вызова) у вас может быть этот код, который устанавливает исходные значения в новые успешно сохраненные значения:

var fields = editForm.getForm.getFields().items;
Ext.each(fields, function(field){
    field.originalValue = field.getValue();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...