在另一个表格中提交表格

时间:2013-10-09 16:12:48

标签: javascript php forms

我有一个带有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>

我如何才能提交第二张表格而非主要表格?

3 个答案:

答案 0 :(得分:9)

您不能(普遍)提交与其父表单分开的嵌套表单。嵌套表单是无效的HTML,如W3C prohibitions中所述。

为解决您的问题,我建议您使用以下两种不同的表格:

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

答案 1 :(得分:2)

您可以在输入字段中使用“表单”属性,然后混合所有输入。 通过提交,他们可以参考正确的表格。

<form action="" method="post" id="form1"></form>
<form action="" method="post" id="form2"></form>

<input name="firstname" form="form1">
<input name="firstname" form="form2">

<button type="submit" name="submit" form="form1">Save form 1</button>
<button type="submit" name="submit" form="form2">Save form 2</button>

另请参阅https://www.w3schools.com/tags/att_input_form.asp

答案 2 :(得分:0)

JQuery.ajax和html用于通过ajax验证“内部表单”,然后提交整个表单。我在两种情况下都使用ajax来显示controller.php文件和提交ID的目的。你也可以有一个内部表单,它由几个隔离的部分组成,通过使用类而不是id作为Jquery选择器。

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