0

这个论坛中的任何案例都没有帮助我。我做了所有引用的选项,比如

$(this).unbind("click");
e.stopPropagation();
e.preventDefault();
return false;
$('form').unbind("submit");
onsubmit="return false;
etc...

我到处都试过了。他们都没有为我的案子工作。请帮助我,我只是坚持需要尽快启动该项目。

这是我的代码:

<form class="form-horizontal" method="post" id="payment">
  <fieldset id="pincode_fieldset" <?php echo ($user->pincode=="" ||      $user->pincode_error==3)? "disabled":""; ?>>
    <input type="text" class="form-control" id="username" name="username">
    <input type="text" class="form-control" id="password" name="password">
    <input type="text" class="form-control" id="deposit" name="deposit">
    <a type="submit" id="submit_btn" class="btn btn-primary btn-small pull-right">Pay</a>
  </fieldset>
</form>


<script>

//payment confirmation;
function confirmPayment(){

$("#username2").text($("#username").val());
$("#deposit2").text("€"+$("#deposit").val());
$('#confirmModal').modal('show');

$("#confirm_btn").click(function(e){
    $("#modal_content").hide();
    //$(this).unbind("click");
    submitForm('#payment','payment.php', true, true);
    //e.stopPropagation();  
});

$("#back_btn").click(function(){
    $('#confirmModal').modal('hide');
    $(document).ready(function(){
        $('#modal_content').show('slow');
    });
});
   //$('form').unbind("submit");
   return false;
}

$("#payment").submit(function(){
    confirmPayment(); 
    return false;
});

</script>

案例1: 当我点击#submit_btn 并点击#confirm_btn 表单提交一次;

案例2: 当我单击#submit_btn 并单击#back_btn 并单击#submit_btn 并单击#confirm_btn 表单提交两次;

案例 3: 如果我执行 3 次操作,它会提交 3 次

等等

我检查了警报();问题在这里:

$("#confirm_btn").click(function(e){
    $("#modal_content").hide();
    //$(this).unbind("click");
    submitForm('#payment','payment.php', true, true);
    //e.stopPropagation();  
});

submitForm() 一次又一次地提交取决于我在#submit_btn 上所做的点击。我需要在用户提交之前为他们提供确认选项。请帮帮我,我整日整夜都无法解决。

4

2 回答 2

0

我会做这样的事情,(i)取消对<a..>作为提交按钮的元素的单击,以及(ii)在顶层绑定小部件操作,模态/确定按钮实际提交表单。

<form class="form-horizontal" method="post" id="payment" action="payment.php">
    ...
    <a type="submit" id="submit_btn" class="btn btn-primary btn-small pull-right">Pay</a>
    ...
</form>

<script>
$(document).ready(function () {

    $("#confirm_btn").click(function (e) {
        $('#payment').submit();
        $("#confirmModal").hide();
    });

    $("#back_btn").click(function () {
        $('#confirmModal').modal('hide');
    });

    function displayModal() {
        $("#username2").text($("#username").val());
        $("#deposit2").text("€" + $("#deposit").val());
        $('#confirmModal').modal('show');
    }

    // clicking on the submit button shouldn't submit, but just 
    // display the modal. 
    $("#submit_btn").click(function () {
        displayModal();
        return false; 
    });

});
</script>
于 2013-10-13T12:43:22.787 回答
0

最后我自己解决了这个问题。我只是将 confirmPayment() 分成两部分,它起作用了:

<script>

//payment confirmation;
 function confirmPayment()
{
     $("#username2").text($("#username").val());
     $("#deposit2").text("€"+$("#deposit").val());
     $('#confirmModal').modal('show');
 }

 $(document).ready(function(){
     $("#confirm_btn").click(function(e){
         $("#modal_content").hide();
         submitForm('#payment','payment.php', true, true);
     });

     $("#back_btn").click(function(){
        $('#confirmModal').modal('hide');
        $(document).ready(function(){
            $('#modal_content').show('slow');
        });
    });

   return false;
 });

 $("#payment").submit(function(){
     confirmPayment(); 
     return false;
 });

 </script>
于 2013-10-13T12:44:24.430 回答