2013-10-09 4 views
1

POST 메서드가있는 양식과 다른 페이지의 작업이 있습니다.다른 양식의 양식 제출

양식 내에 다른 양식으로 제출해야하지만 다른 양식으로 제출해야하지만 기본 양식 작업으로 제출해야합니다.

이 내 두 번째 형태 :

<script> 
    function formSubmit() 
    { 
    document.getElementById("invoices_form").submit(); 
    } 
    </script> 

<form action="resend_multiple_invoices.php" name="invoices_form" method="post"> 

<input type="button" onclick="formSubmit()" value="Send Invoices" /> 

</form> 

내가 그것을 두 번째 형태가 아닌 메인 하나를 제출 얻을 수있는 방법?

+7

"양식 내에 다른 양식이 있습니다."이 작업을 수행하지 마십시오. HTML의 중첩 된 양식이 작동하지 않습니다. 나는 * 매우 * 다른 '

'내부에' '을 넣지 않을 것을 제안합니다. –

+2

그래, 양식 안에 양식을 넣는 것은 무효합니다. 나의 나쁜 경험이 나에게 올바르게 작용한다면 크롬은 그것을 완전히 거부 할 것입니다! 왜냐하면 당신은 자바 스크립트를 사용하고 있기 때문에, "폼 안에 폼"이 필요하지 않습니다. :) – Luke

+8

왜 두 개의 폼을 사용하지 않는 것이 좋을까요? –

답변

6

중첩 된 양식을 상위 양식과 별도로 제출할 수는 없습니다. 중첩 된 양식은 W3C prohibitions에 설명 된대로 잘못된 HTML입니다.

<script> 
    function invoicesFormSubmit() 
    { 
     document.getElementById("invoices_form").submit(); 
    } 

    function otherFormSubmit() 
    { 
     document.getElementById("other_form").submit(); 
    } 
</script> 

<form action="resend_multiple_invoices.php" name="invoices_form" method="post"> 

    // 
    // Input fields go here 
    // 

    <input type="button" onclick="invoicesFormSubmit()" value="Send Invoices" /> 
</form> 

<form action="other_method.php" name="other_form" method="post"> 

    // 
    // Input fields go here 
    // 

    <input type="button" onclick="otherFormSubmit()" value="Other Method" /> 
</form> 
0

JQuery.ajax 한 후 전체 양식을 제출, 아약스를 통해 "내부 형태"를 검증하기위한 HTML :

이 문제를 해결하기 위해, 나는 다음과 같이 두 개의 분리 된 형태를 사용하는 것이 좋습니다. 두 경우 모두 ajax를 사용하여 controller.php 파일의 목적과 제출 ID를 표시합니다. 또한 Jquery 선택기로 ID 대신 클래스를 사용하여 여러 개의 분리 된 섹션으로 구성된 내부 양식을 가질 수 있습니다.

<form> 
    <input /> 
    <textarea /> 
    <select /> <!-- etc. --> 
    <section id="verify"> 
     <input /> 
     <textarea /> 
     <select /> <!-- etc --> 
     <button type="button">submit</button> 
     <!-- eg. sub-submission verifies data in section --> 
    </section> 
    <select /> 
    <input /> 
    <input type="submit" value="submit" /> 
</form> 
<script> 
$(document).ready(function() { 

    $("#verify button").on ('click', verify); 
    $('form').submit (formSend); 

    function verify(){ 
     // get input data within section only (ie. within inner form) 
     var postData = $('#verify').filter(':input').serializeArray(); 
     postData.push ({name:"submitId", value:'verify'}); 
     var request = $.ajax ({ 
      type: "POST", 
      url: "controller.php", 
      data: postData, 
      error: function (xhr, status, message){ 
      alert (status); 
      } 
     }); 
    } 
    function formSend(){ 
     // get input data within entire form 
     var postData = $(this).serializeArray(); 
     postData.push ({name:"submitId", value:'send'}); 
     var request = $.ajax ({ 
      type: "POST", 
      url: "controller.php", 
      data: postData, 
      error: function (xhr, status, message){ 
      alert (status); 
      } 
     }); 
    } 
}); 
</script>