2017-07-18 67 views
-1

我有在它的表(在其值可以编辑)形式,像这样:如何在php中使用表格发表表格?

<form action="file.php" id="myform" method="POST"> 
    <input name="inp"> 
    <div class="divclass"> 
     <table id="mytable" name="mytable"> 
     <tr><th>col1</th><th>col2</th></tr> 
     <tr><td contenteditable='true'>val11</td> 
     <td contenteditable='true'>val12</td></tr> 
     <tr><td contenteditable='true'>val21</td> 
     <td contenteditable='true'>val21</td></tr> 
     </table> 
    </div> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

<?php 
    print_r ($_POST) 
?> 

所以,当我点击提交,整个表格应提交正确的?

但只是输入 - inp &提交得到提交到窗体,我知道当我打印后参数数组在php中。

有人能解释我怎么能得到表数据太在我的后参数组$ _POST?

另外如何触发表上的onchange事件?我想这一点,但它似乎没有工作:

$("#mytable").change(function (event) { 
    console.log("changed") 
    console.log($("#keno_config_table").val()) 
}) 
+2

您需要使用''字段,使其'contenteditable'不会通过它们的值。 – Albzi

+0

您无法发布表格,因此您需要使用标记。 –

回答

0

我给你做这个

<form action="file.php" id="myform" method="POST"> 
    <input name="inp"> 
    <div class="divclass"> 
     <table id="mytable" name="mytable"> 
     <tr> 
      <th>col1</th> 
      <th>col2</th> 
     </tr> 
     <tr> 
      <td><input name='col1[]' style='border:0;outline:0;display:inline-block' value='value'></td> 
      <td><input name='col2[]' style='border:0;outline:0;display:inline-block' value='value'></td> 
     </tr> 
     <tr> 
      <td><input name='col1[]' style='border:0;outline:0;display:inline-block' value='value'></td> 
      <td><input name='col2[]' style='border:0;outline:0;display:inline-block' value='value'></td> 
     </tr> 
     </table> 
    </div> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

(当然,做一个类的风格,我只是想做得更简单)。输入看起来像无边界的contenteditable标签,您将能够获得所有col1和col2的阵列,如$_POST['col1']$_POST['col2']另外,如果您不想要发送默认数据,则可以将值更改为placeholders

1

所以,当我点击提交,整个表格应提交正确的?

不是。它不是表格控件。

但就在输入 - INP &(如同选择,文本域和按钮)提交获得提交表单

输入是表单控件。

有人可以请解释我怎么能得到表数据也在我的后参数组$ _POST?

使用JavaScript,监听表单元素上的提交事件,并将表格的HTML复制到隐藏输入的value属性中。

或者:在表格单元格中使用输入元素而不是使用contentEditable。

0

当您提交表单时,只有selector元素中的值被提交而不是所有html元素。 但是,如果您可以在<td>标记内添加输入标记,则可以提交值。下面的代码应该适合您。

<form action="file.php" id="myform" method="POST"> 
    <input name="inp"> 
    <div class="divclass"> 
     <table id="mytable" name="mytable"> 
     <tr><th>col1</th><th>col2</th></tr> 
     <tr><td contenteditable='true'><input type="hidden" value="val11" name="value1"> val11</td> 
     <td contenteditable='true'><input type="hidden" value="val12" name="value2"> val12</td></tr> 
     <tr><td contenteditable='true'><input type="hidden" value="val21" name="value3"> val21</td> 
     <td contenteditable='true'><input type="hidden" value="val21" name="value4"> val21</td></tr> 
     </table> 
    </div> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

jQuery的

$("#mytable input[type='text']").change(function (event) { 
    console.log("changed") 
    console.log($(this).val()) 
}); 

PHP

<?php 
if (!empty($_POST)){ 
    echo "Post data received"; 
    echo "Value 1 :".$_POST["value1"]; 
    echo "Value 2 :".$_POST["value2"]; 
    echo "Value 3 :".$_POST["value3"]; 
    echo "Value 4 :".$_POST["value4"]; 
}else{ 
    echo "Post data is empty. No value is passed from HTML to the server"; 
} 
?> 
+0

但是这样,我不能发布已编辑的新值。说我在打开浏览器后将val11更改为asd11,我无法发布新的值? – user3248186

+0

将输入类型从“隐藏”更改为“文本”。您可以编辑并发送它。但是你会在'​​'标签中看到一个输入框。 –