Javascript 修改yii.activeForm.js是一个好主意吗?如果不是,还有什么替代方法?
js帮助客户端验证和允许或拒绝表单提交。单击后,活动表单将自动调用submitForm:function() 现在,我想在验证期间将活动表单按钮文本更改为“处理”,并在成功验证后禁用该按钮,以防止双击 我稍微修改了yii.activeForm.js文件(手动包含4行),它以我需要的方式运行良好Javascript 修改yii.activeForm.js是一个好主意吗?如果不是,还有什么替代方法?,javascript,yii,onclick,yii2,active-form,Javascript,Yii,Onclick,Yii2,Active Form,js帮助客户端验证和允许或拒绝表单提交。单击后,活动表单将自动调用submitForm:function() 现在,我想在验证期间将活动表单按钮文本更改为“处理”,并在成功验证后禁用该按钮,以防止双击 我稍微修改了yii.activeForm.js文件(手动包含4行),它以我需要的方式运行良好 submitForm: function () { var oldtext= $('#smartbtn').text(); // manually included $('#
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']) ?>
submitForm:function(){
var oldtext=$('#smartbtn')。text();//手动包含
$('#smartbtn').text('Processing…');//手动包含
var$form=$(此),
data=$form.data('yiiActiveForm');
if(data.validated){
//第二次提交调用(来自验证/更新输入)
data.submiting=false;
var event=$.event(events.beforesmit);
$form.trigger(事件);
如果(event.result==false){
data.validated=false;
提交定稿($表格);
返回false;
}
updateHiddenButton($form);
$('#smartbtn').attr('disabled','disabled');//手动包含
return true;//验证通过后继续提交表单
}否则{
$('#smartbtn').text(oldtext);//手动包含
//第一次提交的调用(来自yii.js/handleAction)-执行验证
SetSubmitFinalizedFer($form);
if(data.settings.timer!==未定义){
clearTimeout(data.settings.timer);
}
data.submiting=true;
方法.validate.call($form);
返回false;
}
},
//活动形式
但是,我觉得修改composer生成的文件不是一个好的做法
修改yii.activeForm.js可以吗。?
如果不是,我如何在不接触yii.activeForm.js的情况下实现相同的功能
我还注意到web/asset目录有一些随机命名的子目录,在两个项目(安装)上不一样
例如:web/assets/e67bec0b/yii.activeForm.js是出于安全目的吗
多谢各位 您可以使用yiiActiveForm的
事件
轻松强制更改。例如,在您的案例中,您可以执行以下操作:
$(document).on({
beforeValidate: function (event, messages, deferreds) {
// Disable button or change text with find child of event variable.
},
afterValidate: function (event, messages, errorAttributes) {
// Restore texts...
}
});
我认为这是有帮助的。我将尝试使用事件。谢谢