1

我有一个包含以下字段的订单页面:

quantity, id, name, language, publisher

我的 php 页面上最初创建了 10 个字段,代码如下:

<form action="new_order.php" method="POST">

        <fieldset>
          <div id="inputRows"> 
            <div class="controls controls-row">
              <label class="span1">Qty</label>
              <label class="span1">ID</label>
              <label class="span5">Literature</label>
              <label class="span2">Language</label>
              <label class="span2">Publisher</label>
            </div>

            <?php 
            $i = 0;
            //make 10 initial order forms
            for($i; $i <10; $i++) {
              echo "<div class=\"controls controls-row\">\r\n";
              echo "<input class=\"span1\" type=\"text\" id=\"quantity\" name=\"order[{$i}][quantity]\">\r\n";
              echo "<input class=\"span1\" type=\"text\" id=\"id\" name=\"order[{$i}][id]\">\r\n";
              echo "<input class=\"span5\" type=\"text\" id=\"name\" name=\"order[{$i}][name]\">\r\n";

              echo "<select class=\"span2\" type=\"text\" id=\"language\" name=\"order[{$i}][language]\">\r\n";
              foreach($lang as $k=>$v) {
                echo "<option value=\"{$k}\">" . $v . "</option>\r\n";
              }
              echo "</select>\r\n";

              echo "<input class=\"span2\" type=\"text\" id=\"publisher\" name=\"order[{$i}][publisher]\">\r\n";
              echo "</div>\r\n";
              echo "\r\n";
            }
            ?>
          </div>
            <input type="button" id="addline" value="Add Another Line" >
            <br /><br /><br />
            <hr />
            <button type="submit" name="submit" class="btn btn-primary" value="order">Add Order</button>
            <button type="submit" name="submit" class="btn" value="cancel">Cancel</button>
          </fieldset>
      </form>

一切都很好。表单加载良好。所有选项都很好。我检查了源代码。

现在,我在顶部有一点 jQuery,它可以让我添加另一个字段。我已经设置为插入一整行具有这些相同的字段,但为了简单起见,让我们只做一个文本字段:

$(function() {

  $('#addline').on('click', function() {
    nInput = '<input type="text" name"text1" >';
    $('#inputRows').append(nInput);
  });
});

它添加了行就好了。没问题。当我将页面提交给自己时,原来的 10 个数组会被很好地拾取,但新字段没有通过。

我正在研究 Stack 和其他网站,我在某处读到的内容说这是因为表单已经加载,所以当您添加另一个输入字段时,它不包含在表单数据中。这是怎么回事?如果是这样,还有其他方法吗?

这是否与我使用 .on() 函数与 .click() 函数的事实有关?还是因为它在 $('document').ready() 处运行?在一切确实加载之后?

编辑:这是它提交给的 php 脚本:

<?php
  require_once("../../includes/initialize.php");

  if(!isset($_SESSION['user_id'])) {
    redirect("login.php");
  }

  if(isset($_POST['submit']) && $_POST['submit' == 'order']) {
    include("html/neworder.html.php");
  }

这里是 print_r($_POST),它是从包含的 neworder.html.php 文件中调用的:

Array
(
    [order] => Array
        (
            [0] => Array
                (
                    [quantity] => 
                    [id] => 
                    [name] => 
                    [language] => en
                    [publisher] => 
                )

            [1] => Array
                (
                    [quantity] => 
                    [id] => 
                    [name] => 
                    [language] => en
                    [publisher] => 
                )

   //etc... 

            [9] => Array
                (
                    [quantity] => 
                    [id] => 
                    [name] => 
                    [language] => en
                    [publisher] => 
                )

        )

    [submit] => order
)
4

2 回答 2

1

我认为这是您$_POST['submit' == 'order']在 php 中使用的事实,并且$_POST['submit'] == 'order'

再来一张脸?

于 2013-06-19T20:53:02.607 回答
0

解决了:

$(function() {

  $('#addline').on('click', function() {
    nInput = '<input type="text" name"text1" >';
    $('#inputRows').append(nInput);
  });
});

输入字段的名称变量中缺少“=”。这就是为什么 POST 没有选择它的原因。

掌心

于 2013-06-19T20:40:53.613 回答