2016-07-26 5 views
0

私はチェックボックス付きのモーダルを持っています。私は、サイト上の2つの異なる場所に情報をプルする2つのボタンのためにそれを再利用しようとしています。モーダルを別のボタンで再利用して、フォームのダブル送信を防止するにはどうすればよいですか?

問題はJQueryの問題です。物事は提出されますが、私がButton Aを押すと、すべて正常に動作します。この後にButton Bを押すと、Button Aが再送信され、Button Bも送信されます。これは逆の順序でボタンを操作する場合にも発生します。

フォームとなるメインページがあります。このモーダルは、ボタンAを含むフォームをポップアップします。ポリシーを選択してから、「submit」をクリックします。これにより、メインフォームに追加されます。ボタンBでポリシーを選択すると、ポリシーファイルが追加されます。同様ですが少し異なりますが、どちらも同じモーダルを使用します

これを押すとモーダルがポップアップします。

<a href="#" data-mylink="1" role='button' class="btn btn-default" data-toggle='modal' data-target='#policyattach_instructions1'>Button A</a> 

<a href="#" data-mylink="2" class="btn btn-default" data-toggle="modal" data-target="#policyattach_instructions1">Button B</a> 

モーダルのボタンを送信します。チェックボックスがボタンのクリックでチェックされ、JQueryの途中で取得されないかどうかをチェックします。

<input type="button" name="action" class="btn btn-success ajaxifypolicies2" value="Add Policy" onClick="if(radio_checkbox_validate(document.add_policies_form,'one or more Policies & Procedures.')) { return true; } else { return false; }" /> 

jQueryのは:

$('#policyattach_instructions1').on('shown.bs.modal', function (e) { 
    $('#add_policies_display').html("<center style='margin-top: 25px;'>Use the search tools above to find Policies & Procedures.</center>"); 
    var btn = $(e.relatedTarget); 
    var pnpid = btn.data('mylink'); 
    //alert(pnpid); 
    if(pnpid==1){ 
    $(".ajaxifypolicies2").click(function(){ 
      alert("test98"); 
      $('[id^="add_policies_checkbox"]').each(function(i, v){ 
       if($(v).prop('checked')){ 
       var data=$(v).val(); 
       //alert(data); 
       $("#linked_pnp_instructions").append("<div id='pnpID_instruction"+data+"1'><h6><input type=hidden name=pnpID_instructions value=\'"+data+"\' />P&P #'s: "+data+" <a href='#' class='clear_pnp' id='pnpID_instruction"+data+"'>Clear</a></h6></div>"); 
       //$("#policyattach_instructions1").removeData('bs.modal'); 


       } 
      });/**/ 
      $(".clear_pnp").click(function(){ 
       var ID=this.id; 
       //alert(ID+"1"); 
       $("#"+ID+"1").remove(); 
       return false; 
      }); 
      $("#policyattach_instructions1").modal('hide'); 
    });//end ajaxifypolicies/**/ 
    } 
    else 
    { 
    $(".ajaxifypolicies2").click(function(){ 
      alert("test99"); 

      $('[id^="add_policies_checkbox"]').each(function(i, v){ 
       if($(v).prop('checked')){ 
       var data=$(v).val(); 
       //alert(data); 
       $("#linked_pnp").append("<div id='pnpIDs"+data+"1'><h6><input type=hidden name=pnpIDs value=\'"+data+"\' />P&P #'s: "+data+" <a href=# class=clear_pnp id='pnpIDs"+data+"' >Clear</a></h6></div>"); 
       //$("#policyattach_instructions1").removeData('bs.modal'); 
       // $("#policyattach_instructions1").modal('hide'); 

       } 
      });/**/ 
      $(".clear_pnp").click(function(){ 
       var ID=this.id; 
       //alert(ID+"1"); 
       $("#"+ID+"1").remove(); 
       return false; 
      }); 
      $("#policyattach_instructions1").modal('hide'); 
    });//end ajaxifypolicies/**/ 
    } 
    return false;/**/ 
});//end modal 
    $('#policyattach_instructions1').on('hidden.bs.modal', function (e) { 
     alert("asfdasf"); 
     $(this).removeData('bs.modal'); 
    }); 

は、私も試してみて、二回ajaxifypolicies2使用を避けるために、これを試してみました:

$(".ajaxifypolicies2").click(function(){ 
     if(pnpid==1){ 
      alert("test98"); 
      $('[id^="add_policies_checkbox"]').each(function(i, v){ 
       if($(v).prop('checked')){ 
       var data=$(v).val(); 
       //alert(data); 
       $("#linked_pnp_instructions").append("<div id='pnpID_instruction"+data+"1'><h6><input type=hidden name=pnpID_instructions value=\'"+data+"\' />P&P #'s: "+data+" <a href='#' class='clear_pnp' id='pnpID_instruction"+data+"'>Clear</a></h6></div>"); 
       //$("#policyattach_instructions1").removeData('bs.modal'); 


       } 
      });/**/ 
     } 
     else 
     { 
      alert("test99"); 

      $('[id^="add_policies_checkbox"]').each(function(i, v){ 
       if($(v).prop('checked')){ 
       var data=$(v).val(); 
       //alert(data); 
       $("#linked_pnp").append("<div id='pnpIDs"+data+"1'><h6><input type=hidden name=pnpIDs value=\'"+data+"\' />P&P #'s: "+data+" <a href=# class=clear_pnp id='pnpIDs"+data+"' >Clear</a></h6></div>"); 
       //$("#policyattach_instructions1").removeData('bs.modal'); 
       // $("#policyattach_instructions1").modal('hide'); 

       } 
      });/**/ 
     } 
      $(".clear_pnp").click(function(){ 
       var ID=this.id; 
       //alert(ID+"1"); 
       $("#"+ID+"1").remove(); 
       return false; 
      }); 
      $("#policyattach_instructions1").modal('hide'); 
    });//end ajaxifypolicies/**/ 



    return false;/**/ 
});//end modal 
+0

ここでは正確に何をしようとしていますか?あなたの投稿を理解できないようです。 – omoabobade

+0

私たちはフォームであるメインページを持っています。このモーダルは、ボタンAを含むフォームをポップアップします。ポリシーを選択してから、「submit」をクリックします。これにより、メインフォームに追加されます。ボタンBでポリシーを選択すると、ポリシーファイルが追加されます。同様ですが少し異なりますが、どちらも同じモーダルを使用しています。これを質問に更新します。 –

+0

これを簡略化してプランナーやフィドルに入れる機会はありますか?問題を簡単に解決するのに役立ちます。 –

答えて

0
$('#policyattach_instructions1').on('shown.bs.modal', function (e) { 
       $('#add_policies_display').html("<center style='margin-top: 25px;'>Use the search tools above to find Policies & Procedures.</center>"); 

// alert("testy"); 
    var btn = $(e.relatedTarget); 
    var pnpid = btn.data('mylink'); 
    //var pnpid = $(this).data('mylink'); 
    //alert(pnpid); 

    $(".ajaxifypolicies2").click(function(){ 

     alert(pnpid); 
     if(pnpid==1){ 
      alert("test98"); 
      pnpid = (""); 
      $('[id^="add_policies_checkbox"]').each(function(i, v){ 
       if($(v).prop('checked')){ 
       var data=$(v).val(); 
       //alert(data); 
       $("#linked_pnp_instructions").append("<div id='pnpID_instruction"+data+"1'><h6><input type=hidden name=pnpID_instructions value=\'"+data+"\' />P&P #'s: "+data+" <a href='#' class='clear_pnp' id='pnpID_instruction"+data+"'>Clear</a></h6></div>"); 
       //$("#policyattach_instructions1").removeData('bs.modal'); 

       } 
      });/**/ 
     } 

エルス場合は削除され、作られた、それだけ

場合
 if(pnpid==2) 
     { 
      alert("test99"); 

以前の送信から複数の値が送信されないようにしました。pnpid =( "");

  pnpid = (""); 
      $('[id^="add_policies_checkbox"]').each(function(i, v){ 
       if($(v).prop('checked')){ 
       var data=$(v).val(); 
       //alert(data); 
       $("#linked_pnp").append("<div id='pnpIDs"+data+"1'><h6><input type=hidden name=pnpIDs value=\'"+data+"\' />P&P #'s: "+data+" <a href=# class=clear_pnp id='pnpIDs"+data+"' >Clear</a></h6></div>"); 
       //$("#policyattach_instructions1").removeData('bs.modal'); 
       // $("#policyattach_instructions1").modal('hide'); 
       } 
      });/**/ 
     } 
      $(".clear_pnp").click(function(){ 
       var ID=this.id; 
       //alert(ID+"1"); 
       $("#"+ID+"1").remove(); 
       return false; 
      }); 
      $("#policyattach_instructions1").modal('hide'); 
    });//end ajaxifypolicies/**/ 



    return false;/**/ 
});//end modal 
関連する問題