yiisoft / yii2

Yii 2: The Fast, Secure and Professional PHP Framework
http://www.yiiframework.com
BSD 3-Clause "New" or "Revised" License
14.23k stars 6.91k forks source link

JS: not refreshing errorSummary block after validate the attribute ActiveForm. #6483

Closed InteLigent closed 3 years ago

InteLigent commented 9 years ago

Sequencing:

1) Click on submit button in ActiveForm, so that there were errors in errorSummary block. 2) Correct value in any field of form, but error message not refreshing. After successful validation of the field, errorSummary block not updating or at least not remove error message from block related to the validated field

samdark commented 9 years ago

Is it true for any active form or only specific ones?

InteLigent commented 9 years ago

Для любой формы и любого поля, пришлось хорошо разобраться в yii.ActiveForm.js: Метод:

updateSummary($form, messages);

вызывается только при сабмите формы:

https://github.com/yiisoft/yii2/blob/master/framework/assets/yii.activeForm.js#L487

Я для своих потребностей расширил функционал модуля yii.ActiveForm.js:

1) Авто удаление ошибок из блока errorSummary при успешной валидации поля.

2) Новые методы: validateAttribute - валидация конечного атрибута(ов) формы. hasError - само за себя говорит название функции. resetStatus - сбросить внутренние состояние данных атрибута(ов), иногда бывает очень полезным при работе по созданию сложных динамических сценариев на странице.

Расширение функционала к существующим функциям: resetForm - возможность сбрасывать индивидуально состояние атрибута(ов), не только для внутреннего но и визуального состояния. А вот resetStatus срабытывает только для внутреннего. В настоящий момент resetForm работает в связке с событием reset формы.

И еще одна мелочь осталось, которую надо пофиксить, скрывать блок errorSummary, когда количество ошибок равно нулю.

Моя последняя версия yii.ActiveForm.js лежит в моем форке

bizley commented 3 years ago

Closing due to inactivity. If this should be reopen please write here.