如何防止双击提交

时间:2018-09-04 14:06:01

标签: php jquery yii2 yii2-advanced-app

我在yii2中使用ActiveForm创建了注册表单,通过双击,表单提交,它自动提交。如何防止这种情况,我只需要单击提交按钮即可提交表单。

为什么会这样?解决方法是什么?

这是我的表单代码:

$form = ActiveForm::begin([
    'enableAjaxValidation' => true,
]);
?>
<?=$form->field($model, 'nickname', ['addon' => ['prepend' => ['content' => '<i class="glyphicon glyphicon-option-horizontal"></i>']]])->label(false)->textInput()?>
<?=$form->field($model, 'phone_number', ['addon' => ['prepend' => ['content' => '<i class="glyphicon glyphicon-option-horizontal"></i>']]])->label(false)->textInput()?>
<?=$form->field($model, 'email', ['addon' => ['prepend' => ['content' => '@']]])->label(false)->textInput()?>
<?=$form->field($model, 'password', [
    'addon' => ['prepend' => ['content' => '<i class="fa fa-key"></i>']]])->passwordInput(['autocomplete' => 'off'])->label(false)->passwordInput();
?>
<div class="form-group">
<?=Html::submitButton(Yii::t('app', 'Signup'), ['value' => 'signupp', 'class' => 'btn btn-primary', 'name' => 'signupButton', 'style' => 'width:100%;'])?>
</div>
<?php ActiveForm::end();?>

1 个答案:

答案 0 :(得分:1)

提交表单时,可以使用ActiveForm的js事件beforeSubmit禁用按钮,可以使用CSS pointerEvents:'none'禁用单击按钮。

id="my-form"设置为表单,将id="my-submit"设置为“提交”按钮,并在视图顶部使用以下脚本,在提交时按钮将被禁用。

$js =<<< JS
        $("#my-form").on("beforeSubmit",function(e){
            e.preventDefault();
            $("#my-submit").css({pointerEvents:'none'});
            return true;
        });

JS;
$this->registerJs($js, \yii\web\View::POS_READY);