admin 发表于 2016-3-2 14:13:59

yii2-lock-form也许这就是你想要的

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

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

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

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

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

第二步:上个厕所

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

轻轻的敲入:'depends' => [
    //other depends
    'light\widgets\LockBsFormAsset'
]
如果你没使用 yii2-bootstrap 也能满足您:你只需要将 light\widgets\LockBsFormAsset 替换成 light\widgets\LockFormAsset.

还需要做什么?

如果还需要做的话,那就是定制一下 Lock 用语,Html::submitButton('提交', ['data-loading-text' => '正在提交数据, 不让你点,哼'])
说了这么多,东西在那儿?

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

admin 发表于 2016-3-2 14:15:04

简单粗暴的做法,在全局 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');
});

页: [1]
查看完整版本: yii2-lock-form也许这就是你想要的