设为首页收藏本站

PHPIN.NET

 找回密码
 立即注册
查看: 404|回复: 1

[扩展应用] yii2-lock-form也许这就是你想要的

[复制链接]

374

主题

381

帖子

2554

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2554
发表于 2016-3-2 14:13:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

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

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

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

第一步:打开命令行,敲入
  1. composer require light\yii2-lock-form=~1.0.0
复制代码


第二步:上个厕所

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

轻轻的敲入:
  1. 'depends' => [
  2.     //other depends
  3.     'light\widgets\LockBsFormAsset'
  4. ]
复制代码

如果你没使用 yii2-bootstrap 也能满足您:你只需要将 light\widgets\LockBsFormAsset 替换成 light\widgets\LockFormAsset.

还需要做什么?

如果还需要做的话,那就是定制一下 Lock 用语,
  1. Html::submitButton('提交', ['data-loading-text' => '正在提交数据, 不让你点,哼'])
复制代码

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

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

374

主题

381

帖子

2554

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2554
 楼主| 发表于 2016-3-2 14:15:04 | 显示全部楼层
简单粗暴的做法,在全局 js 中添加下面 js:
  1. // 防止重复提交
  2. $('form').on('beforeValidate', function (e) {
  3.     $(':submit').attr('disabled', true).addClass('disabled');
  4. });
  5. $('form').on('afterValidate', function (e) {
  6.     if (cheched = $(this).data('yiiActiveForm').validated == false) {
  7.         $(':submit').removeAttr('disabled').removeClass('disabled');
  8.     }
  9. });
  10. $('form').on('beforeSubmit', function (e) {
  11.     $(':submit').attr('disabled', true).addClass('disabled');
  12. });
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|PHPIN.NET ( 冀ICP备00000001号 )|网站地图  

GMT+8, 2016-12-6 00:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表