2013-10-13 3 views
0

이 포럼의 모든 사례가 도움이되지 않았습니다. 나는 인용 된 모든 옵션을 같이했다.Ajax가 두 번 양식을 제출합니다

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

나는 모든 것을 시도했다. 아무 것도 내 사건 때문에 효과가 없었어. Plz, 내가 방금 프로젝트를 빨리 시작할 필요가있다.

<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 회를 할 경우는 제출 세 번

(); 문제는 여기에 있습니다 :

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

SubmitForm에()를 다시 다시 제출하고하는 것은 내가 #submit_btn에서 변경 한 클릭에 따라 달라집니다. 제출하기 전에 사용자에게 확인 옵션을 제공해야합니다. 제발, 하루 종일 보내고 풀 수는 없어요.

+0

는 정말 오래된 사용자가 그들은 단지 한 짓을하고 싶어 확인해야합니까? 그게 짜증나 는게 아닌가? – thebjorn

+0

사용자 이름이 확실해야하므로 예. 그렇지 않으면 송금 된 돈을 반환 할 수 없습니다. 사용자 이름에 오투가 있고 해당 사용자 이름이 존재하면 해당 사용자 이름으로 실수로 돈이 이전됩니다. 따라서 송금하기 전에 사용자가 두 번 확인해야합니다. – xnote

+0

방금 ​​많은 데이터를 입력하고 제출을 클릭한다는 사실에 확신이 없습니까? (계속할 수는 있지만, 매우 짜증나게됩니다.)'confirmPayment()'함수는 이벤트 처리기를 확인, 제출 및 설정하는 것이 근본적인 문제라고 생각합니다. 들여 쓰기가 불안정합니다.) – thebjorn

답변

0

제출 버튼으로 작동하는 <a..> 요소의 클릭을 취소하고 최상위 수준에서 위젯 동작을 바인딩하는 모달/확인 버튼을 실제로 제출하면 형태.

<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> 
+0

당신 말이 맞아요. 하지만 아약스를 사용 해요. submitForm ('# 지불', 'payment.php', true, true); ajax 제출입니다. 어쨌든 도와 주셔서 감사합니다. 나는 위에 주어진 자신을 해결했다. – xnote

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> 
관련 문제