Я часто использую ActiveForms и считаю его удобным, так как он включает клиент сторонние сценарии проверки yii.js
и yii.activeForm.js
. Обычно он сам заботится о правилах модели и базовой проверке.
До Yii 2.0.9:
Мы могли бы использовать следующий скрипт для предотвращения отправки нескольких форм из-за быстрых нажатий кнопок:
$('form').submit(function(){
$(this).find('button[type!="button"],input[type="submit"]').attr("disabled",true);
setTimeout(function(){
$('form .has-error').each(function(index, element) {
$(this).parents("form:first").find(":submit").removeAttr("disabled");
});
},1000);
});
Но
Текущая версия Yii 2.0.10 привнесла некоторые изменения и не работает в приведенном выше сценарии. Теперь он не отправит форму, если будет выполнен приведенный выше код.
Это также обсуждалось ранее здесь и было определено как ошибка.
С тех пор в yii.js
было два изменения:
- Ошибка № 10358: исправлено состояние гонки в предварительном фильтре yii.js AJAX (silverfire).
- Enh #12580: Приведите yii.js в соответствие со строгим и нестрогим режимами javascript, чтобы разрешить конкатенацию с внешним кодом (mikehaertl)
и yii.activeForm.js
было четыре изменения:
- Ошибка № 10681: восстановлено исправление вызова события beforeValidate в yii.activeForm.js (silverfire).
- Enh #12376: Добавлен параметр в метод validate() yii.activeForm.js для принудительной проверки (DrDeath72).
- Enh #12499: Когда проверка AJAX включена, yii.activeForm.js принудительно запускает ее при отправке формы для отображения всех возможных ошибок (silverfire)
- Enh #12744: добавлено событие afterInit в yii.activeForm.js (werew01f)
Можно ли их заменить другими js-файлами из версии 2.0.9?
Приведет ли замена js-файлов к поломке и неожиданному поведению?
Есть ли лучшее решение для предотвращения многократной отправки?
yii\bootstrap\ActiveForm
вместоyii\widgets\ActiveForm
, может быть, поэтому он работает для меня? - person Ripper   schedule 13.01.2017yii\bootstrap\ActiveForm
иyii\widgets\ActiveForm
, первая является улучшенной версией более поздней, поэтому технически это не должно иметь большого значения. - person Kiran Shakya   schedule 14.01.2017