yii.activeForm.js помогает проверять на стороне клиента и разрешать или запрещать отправку формы. Onclick, активная форма вызывает функцию submitForm: function() автоматически.Это хорошая идея, чтобы изменить yii.activeForm.js, если нет, что является альтернативным способом?
Теперь я хочу изменить текст кнопки активной формы на «обработку» во время проверки и отключить кнопку при успешной проверке, чтобы предотвратить двойной щелчок.
Я немного изменил (вручную включил 4 строки) файл yii.activeForm.js, и он хорошо работает, как мне это нужно.
submitForm: function() {
var oldtext= $('#smartbtn').text(); // manually included
$('#smartbtn').text('Processing...'); // manually included
var $form = $(this),
data = $form.data('yiiActiveForm');
if (data.validated) {
// Second submit's call (from validate/updateInputs)
data.submitting = false;
var event = $.Event(events.beforeSubmit);
$form.trigger(event);
if (event.result === false) {
data.validated = false;
submitFinalize($form);
return false;
}
updateHiddenButton($form);
$('#smartbtn').attr('disabled', 'disabled');// manually included
return true; // continue submitting the form since validation passes
} else {
$('#smartbtn').text(oldtext); // manually included
// First submit's call (from yii.js/handleAction) - execute validating
setSubmitFinalizeDefer($form);
if (data.settings.timer !== undefined) {
clearTimeout(data.settings.timer);
}
data.submitting = true;
methods.validate.call($form);
return false;
}
},
// active form
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary'
,'id'=>'smartbtn']) ?>
Однако я считаю, что изменить файл, созданный композитором, не является хорошей практикой.
Можно ли изменить yii.activeForm.js.? если нет, то как я могу реализовать то же самое, не касаясь yii.activeForm.js.?
Я также заметил, что в каталоге web/asset есть несколько случайно названных подкаталогов и не одинаковы для двух проектов (установка).
Ex: web/assets/e67bec0b /yii.activeForm.js
Это для какой-либо цели безопасности?
спасибо.
Я думаю, что это полезно. Я попытаюсь использовать события. благодаря –