yii2-lock-form 也许这就是你想要的,阻止表单多次提交

是不是被用户的行为所困扰?

一个表单用户点击提交按钮了N次,这也导致了数据提交了N次。

为了此受到了测试的欺辱,受到了老板的批评?

不用怕,它就是来拯救你的。

第一步:打开命令行,敲入 composer require lightyii2-lock-form=~1.0.0

第二步:上个厕所

第三步:如果你的项目中已经使用了 yii2-bootstrap, 那么好,只需要在的你的 AppAsset 「whatever, 只要你全局依赖的就成」

轻轻的敲入:

'depends' => [
    //other depends
    'lightwidgetsLockBsFormAsset'
]

如果你没使用 yii2-bootstrap 也能满足您:你只需要将 lightwidgetsLockBsFormAsset 替换成 lightwidgetsLockFormAsset.

还需要做什么?

如果还需要做的话,那就是定制一下 Lock 用语,

Html::submitButton('提交', ['data-loading-text' => '正在提交数据, 不让你点,哼'])

说了这么多,东西在那儿?

https://github.com/lichunqiang/yii2-lock-form

重要的事情要说三遍:star,star, star, little star, 一闪一闪亮晶晶。

GetYii 目前的做法是简单粗暴的做法,在全局 js 中添加下面 js:

// 防止重复提交
$('form').on('beforeValidate', function (e) {
    $(':submit').attr('disabled', true).addClass('disabled');
});
$('form').on('afterValidate', function (e) {
    if (cheched = $(this).data('yiiActiveForm').validated == false) {
        $(':submit').removeAttr('disabled').removeClass('disabled');
    }
});
$('form').on('beforeSubmit', function (e) {
    $(':submit').attr('disabled', true).addClass('disabled');
});

来源:http://www.getyii.com/topic/261

原文地址:https://www.cnblogs.com/yhdsir/p/5181816.html