PHP提交不会从JS生成的输入字段发布文本

时间:2014-04-01 11:09:08

标签: javascript php html forms

我有一个html表单,其中包含一个文本输入表,最终用于生成SQL INSERT查询。我遇到的问题是我的手动输入表有5个文本输入,然后我给了用户添加更多的选项。这些额外的输入字段创建得很好,当我在添加它们后检查页面上的元素时,它们具有正确的名称,ID,类型等。(尝试发布屏幕截图以提供更好的想法,但我是新用户,所以不能 - 任何方式围绕这个?!)

问题是当我点击表单的提交按钮时,只会发布前5个文本(我使用html标签手动输入的文本)。这是因为它在生成新输入之前读取数据吗?我觉得这不应该是因为我正在使用if(isset($ _ POST ['save'])){其中'save'是我的最终提交按钮。

我在html中得到的表格如下(道歉布局不当/语法杂乱,但在这个意义上它的工作正常):

编辑:我在一个表单中有两个表;这没关系吗?即:

<form action='createtable.php' method='post' border='0'>

<table>
<tr>
<td><input type="button" value="Add column" onclick="addRowToTable();" /></td>
<td><input class='strong' type='submit' value='Create Table' name='save' /></td>
</tr>
</table>

<table name='columnnames' id='columnnames' border='0'>

<tr> <!--start table row 1-->
<td>Column 1:</td> <!--first item in row is just text-->
<td><input type='text' name='col1' id='col1' /></td> <!--second item in row is input text box-->
</tr> <!--end table row-->

<tr> <!--start table row 2-->
<td>Column 2:</td>
<td><input type='text' name='col2' id='col2' /></td>
</tr> <!--end table row-->

<tr> <!--start table row 3-->
<td>Column 3:</td>
<td><input type='text' name='col3' id='col3' /></td>
</tr> <!--end table row-->

<tr> <!--start table row 4-->
<td>Column 4:</td>
<td><input type='text' name='col4' id='col4' /></td>
</tr> <!--end table row-->

<tr> <!--start table row 5-->
<td>Column 5:</td>
<td><input type='text' name='col5' id='col5' /></td>
</tr> <!--end table row-->

</table>
</form>

我用来添加表行的JavaScript如下:

<script>
function addRowToTable()
{
  //get table
  var tbl = document.getElementById('columnnames');
  //find length
  var numberRows = tbl.rows.length;

  // as there's no header row in the table, then iteration = numberRows + 1
  var rowNumber = numberRows + 1;
  var row = tbl.insertRow(numberRows);

  // left cell
  var cellLeft = row.insertCell(0);
  var textBox = document.createTextNode('Column ' + rowNumber + ':');
  cellLeft.appendChild(textBox);

  // right cell
  var cellRight = row.insertCell(1);
  var el = document.createElement('input');
  el.type = 'text';
  el.name = 'col' + rowNumber;
  el.id = 'col' + rowNumber;

  //el.onkeypress = keyPressTest;
  cellRight.appendChild(el);
}
</script>

我已经看到一些与JS生成的表格有关的问题,不想使用$ _POST正确提交,但这些答案看起来相当小,并且想知道是否有人可以提供帮助,因为我一直试图读取数据小时。非常感谢!

2 个答案:

答案 0 :(得分:1)

您是否检查过您的表格标签是否写得正确? (你应该把它包含在你的问题中:o))

<form method=POST action="myURL">
     [...]
</form>

答案 1 :(得分:1)

虽然这是一个非常古老的问题,但我正在写答案以防其他人再次通过它。

PHP代码没有使用jquery从新添加的输入字段中获取值,因为它们都具有相同的名称属性。对于这些类型的动态输入字段,您需要将名称设置为数组<input type="text" name "text[]">。当您编写$text= $_POST['text']时,文本变量将存储名为text[]的输入字段中的所有值,并以数组的形式存储它们。

希望它有所帮助。 :)