2016-12-23 3 views
0

.NET MVCに複数のボタンで送信できるフォームがあります。1秒間のクリックを送信するJqueryフォーム

$(document).ready(function(){ 
    $("[data-crm-action]").on("click", function (e) { 
     e.preventDefault(); 
     $("#EventCommand").val($(this).data("crm-action")); 
     $("form").submit(); 
    }); 
}); 

は、しかし、私が送信されたフォームを確認するためにボタンを二回クリックする必要があります。特定の値にeventCommand隠しフィールドを設定し、各ボタンには、フォームとても似提出します。なぜそれは最初のクリックで提出しないのですか?最初のクリックで、カーソルは検索フィールドのテキストボックスに戻されます。電子メールフィールドには注釈付きのモデルで必要なタグが付けられていますが、私はボタンにformnovalidateを追加しようとしましたが、まだそれを行います。

ここでビューからいくつかのコードです:

@using (Html.BeginForm()) 
{ 
@Html.HiddenFor(m => m.EventCommand) 
@Html.HiddenFor(m => m.IsValid) 
@Html.HiddenFor(m => m.Mode) 

<!-- BEGIN SEARCH AREA --> 
if (Model.IsSearchAreaVisible) 
{ 
    <div class="panel panel-primary"> 
     <div class="panel-heading"> 
      <h1 class="panel-title">Search for Users</h1> 
     </div> 
     <div class="panel-body"> 
      <div class="form-group"> 
       @Html.LabelFor(m => m.SearchEntity.Email): 
       @Html.TextBoxFor(m => m.SearchEntity.Email, new { @class = "form-control" }) 
      </div> 
     </div> 
     <div class="panel-footer"> 
      <button id="btnSearch" class="btn btn-sm btn-primary" data-crm-action="search"> 
       <i class="glyphicon glyphicon-search"></i>&nbsp;Search 
      </button> 
      <button id="btnReset" class="btn btn-sm btn-primary" data-crm-action="resetsearch"> 
       <i class="glyphicon glyphicon-share-alt"></i>&nbsp;Reset 
      </button> 
      <button id="btnAdd" class="btn btn-sm btn-success" data-crm-action="add"> 
       <i class="glyphicon glyphicon-plus"></i>&nbsp;Add 
      </button> 
     </div> 
    </div> 
} 
<!-- END SEARCH AREA --> 

<!-- BEGIN DETAIL AREA --> 
if (Model.IsDetailAreaVisible) 
{ 
    <div class="panel panel-primary"> 
     <div class="panel-heading"> 
      <h1 class="panel-title">User Information</h1> 
     </div> 
     <div class="panel-body"> 
      <!-- BEGIN MESSAGE AREA --> 
      <div class="row"> 
       <div class="col-sm-12"> 
        @if (!Model.IsValid) 
        { 
         <div class="alert alert-danger alert-dismissable" role="alert"> 
          <button type="button" class="close" data-dissmiss="alert"> 
           <span aria-hidden="true"> 
            &times; 
           </span> 
           <span class="sr-only">Close</span> 
          </button> 
          @Html.ValidationSummary(false) 
         </div> 
        } 
       </div> 
      </div> 
      <!-- END MESSAGE AREA --> 
      <div class="form-group"> 
       @Html.LabelFor(m => m.Entity.FirstName) 
       @Html.TextBoxFor(m => m.Entity.FirstName, new { @class = "form-control" }) 
       @Html.LabelFor(m => m.Entity.LastName) 
       @Html.TextBoxFor(m => m.Entity.LastName, new { @class = "form-control" }) 
       @Html.LabelFor(m => m.Entity.Title) 
       @Html.TextBoxFor(m => m.Entity.Title, new { @class = "form-control" }) 
       @Html.LabelFor(m => m.Entity.Email) 
       @Html.TextBoxFor(m => m.Entity.Email, new { @class = "form-control" }) 
       @Html.LabelFor(m => m.Entity.Phone) 
       @Html.TextBoxFor(m => m.Entity.Phone, new { @class = "form-control" }) 
       @Html.LabelFor(m => m.Entity.PhoneExtension) 
       @Html.TextBoxFor(m => m.Entity.PhoneExtension, new { @class = "form-control" }) 
       @Html.LabelFor(m => m.Entity.IsActive) 
       @Html.EditorFor(m => m.Entity.IsActive) 
       @Html.LabelFor(m => m.Entity.AccessLevelID) 
       @Html.TextBoxFor(m => m.Entity.AccessLevelID, new { @class = "form-control" }) 
      </div> 
     </div> 
     <div class="panel-footer"> 
      <button id="btnSave" class="btn btn-sm btn-primary" data-crm-action="save" formnovalidate="formnovalidate"> 
       <i class="glyphicon glyphicon-floppy-disk"></i>&nbsp;Save 
      </button> 
      <button id="btnCancelAdd" class="btn btn-sm btn-primary" data-crm-action="cancelAdd" formnovalidate="formnovalidate"> 
       <i class="glyphicon glyphicon-remove-sign"></i>&nbsp;Cancel 
      </button> 
     </div> 
    </div> 
} 
+1

このコードは完全にうまく見えます。 – Shyju

+0

アプリケーションの別の設定から来る可能性はありますか? – Greg

+0

かもしれません。あなたはあなたのアプリからその質問にいくつかのコードだけを投稿しました。だから私たちはそれがどこに問題を引き起こしているのか分かりません。 – Shyju

答えて

0

私は同じ要求管理パターンを使用し、2つのバリデーション集計フィールドを持っている(なぜ同じ奇数、私は見ていないのに1は完璧に動作モーダルウィンドウ内にあるが、動作は表示されません)、送信前に検証を抑止する必要があります。

私は、私が検証を抑制することを望むと、これは、ここで言及されているだけで迷惑な副作用で動作するボタンの

formnovalidate="formnovalidate" 

タグを設定を試してみました。私の仕事は何

は、私は以下のように検証する唯一の要求のためにオプションとしてe.preventdefaultを設定JS側で、次のとおりです。

command = $(this).data("gtb-action"); 
if (command === "PostNoteEntity") { 
    e.preventDefault(); 
} 

、試すようにしてください!

関連する問題