2017-02-05 19 views
0

私のフォームに問題があります。フォームで複数の送信ボタンを無効にする方法

フォームには4つの送信ボタンがあり、どのボタンが押されたかによって異なるアクションが実行されます。私は私が提出するすべてのボタンを無効にするのいずれかのボタンをクリックするたび

、私は一緒にまさにそれをやっていくつかのコードを置くことをどうにか:

$('button, input[type=button]').click(function(e){ 
       $('#btnGuilty').prop('disabled', true); 
       $('#btnWarning').prop('disabled', true); 
       $('#btnInnocent').prop('disabled', true); 
       $('#btnClose').prop('disabled', true); 
       $(this).parents('form').submit() 
      }); 

私の元の問題は、フォームがもはや提出しませんでしたこのコードを実行すると、最後の行が修正されます。

残念ながら、私はこれを行うと何も起こりません(フォームは送信されますが、送信ボタンのデータは送信されなくなりました)。

私の質問は、この問題を回避する方法です。 - 私が本当にしたいのは、同じ振る舞いで動作するフォームのためだけですが、フォームを複数回送信しないようにボタンを無効にして、クリック機能を「拡張」することは、私が読んだことから、これは不可能です。念のため

マイフォームコード、:

<form class="form" method="post" action=" 
         {{ route('judgeTicket', ['user_id' => $account->account_id, 'hash' => $utils->generateTicketHash($account->account_id), 'ticket_id' => $ticket->id]) }}"> 
          <div class="form-group"> 
           <textarea class="form-control" rows="6" id="ticketDesc" name="description" placeholder="Description"></textarea> 
          </div> 
          <div class="form-group"> 
           <select class="form-control" name="category"> 
            @foreach($categories as $cat) 
             @if ($ticket->category == $cat) 
              <option value="{{ $cat }}" selected>{{ $utils->translateCategory($cat) }}</option> 
             @else 
              <option value="{{ $cat }}">{{ $utils->translateCategory($cat) }}</option> 
             @endif 
            @endforeach 
           </select> 
          </div> 
          @if ($model->hasCachedPermission($group, 'do_single_tickets')) 
           <div class="form-group"> 
            <div class="checkbox"> 
             <label> 
              <input type="checkbox" name="singleDecision" value="1">Single ticket decision 
             </label> 
            </div> 
           </div> 
          @endif 
          <div class="form-group"> 
           <button 
             type="submit" 
             class="btn btn-success" 
             name="btnInnocent" 
             id="btnInnocent"> 
            Innocent 
           </button> 
           @if ($suspended == false || $suspended['Type'] == 'Mute') 

            <button 
              type="submit" 
              class="btn btn-danger" 
              value="Guilty" 
              name="btnGuilty" 
              id="btnGuilty"> 
             Guilty 
            </button> 
           @else 
            <button type="submit" 
              class="btn btn-danger" 
              value="Guilty" 
              name="btnGuilty" 
              id="btnGuilty" 
              disabled="disabled"> 
             Guilty 
            </button> 
           @endif 
           <button 
             type="submit" 
             class="btn btn-warning" 
             value="Warning" 
             name="btnWarning" 
             id="btnWarning"> 
            Warning 
           </button> 
           <button 
             type="submit" 
             class="btn btn-default" 
             value="Close ticket" 
             name="btnClose" 
             id="btnClose"> 
            Close ticket 
           </button> 
          </div> 
          {!! csrf_field() !!} 
         </form> 

答えて

0

いけない送信ボタンを処理しようとします。ユーザーはフォームを送信するさまざまな方法を使用できます。

$(document).ready(function() { 
    $('form').on('submit', function(e) { 
    $(this).find('button, input[type=button]').prop('disabled', true); 
    }); 
}); 

作業JsFiddle:https://jsfiddle.net/085nzfos/
(クロスオリジン・セキュリティのでリダイレクトが機能していないことに注意してください、、。)

(キーボード、タッチ、...)

は多分このコードを試してみてください

関連する問題