php - 通过在 laravel 中快速单击来防止多次提交表单

标签 php forms laravel

所以我遇到了一个问题,如果我足够快地点击提交按钮,我的表单会被提交多次。我怎样才能防止这种情况发生? token 是自动添加的,但我想它根本没有帮助。 表单示例:

  <div class="row padding-10">
    {!! Form::open(array('class' => 'form-horizontal margin-top-10')) !!}
    <div class="form-group">
      {!! Form::label('title', 'Title', ['class' => 'col-md-1 control-label padding-right-10']) !!}
      <div class="col-md-offset-0 col-md-11">
      {!! Form::text('title', null, ['class' => 'form-control']) !!}
      </div>
    </div>
    <div class="form-group">
      {!! Form::label('body', 'Body', ['class' => 'col-md-1 control-label padding-right-10']) !!}
      <div class="col-md-offset-0 col-md-11">
      {!! Form::textarea('body', null, ['class' => 'form-control']) !!}
      </div>
    </div>
    <div class="col-md-offset-5 col-md-3">
      {!! Form::submit('Submit News', ['class' => 'btn btn-primary form-control']) !!}
    </div>
    {!! Form::close() !!}
  </div>

我的 NewsController 存储方法:

    public function store()
{
$validator = Validator::make($data = Input::all(), array(
  'title' => 'required|min:8',
  'body' => 'required|min:8',
));

if ($validator->fails())
{
  return Redirect::back()->withErrors($validator)->withInput();
}

News::create($data);

return Redirect::to('/news');
}

最佳答案

一种方法是对按钮使用点击处理程序,它首先禁用按钮,然后提交表单。

<script>
    function submitForm(btn) {
        // disable the button
        btn.disabled = true;
        // submit the form    
        btn.form.submit();
    }
</script>

<input id="submitButton" type="button" value="Submit" onclick="submitForm(this);" />

关于php - 通过在 laravel 中快速单击来防止多次提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27682830/

相关文章:

laravel - 如何在用户注册时在 Laravel 中自动设置随机字符串 ID

PHP摩尔斯电码转换器

python - 如何实现用数据库中的值填充的下拉列表

php - (HTML、PHP、MySQL)确保我拥有我需要的一切,提交表单数据

php - Laravel 多页面多语言路由

Laravel 广播不向推送器发送事件

php - 从 MySQL 中提取数据到 json 数组

php - OO设计问题(使用Symfony2)

PHP intval() 行为?

javascript - 使用 jquery 对表单中的一系列输入和选择字段进行求和和相乘