我刚开始使用jQuery。我一直在使用的一件事是将行添加到表格中的表格。
当我添加新行时,我会给出所有表单元素名称,例如'name_' + rowNumber
。每次添加一行时,我都会增加rowNumber
。
我通常还有一个删除行按钮。即使删除了一行,rowNumber
计数也保持不变,以防止重复元素名称。
提交表单时,我将隐藏元素设置为等于jQuery中的rowNumber
值。然后在PHP中,我从1计算到rowNumber
值。然后,对于每个值,我执行isset($_REQUEST['name'_ . index])
。这就是我如何提取在jQuery中删除行之后剩余的表单元素。
这里有没有人有更好的技术来计算已删除的行?
答案 0 :(得分:3)
对于我们的一些较简单的表,我们使用字段名称,例如'name []',但对于JavaScript,它们需要一个可用的id。
它确实增加了一些复杂性'name [0]'必须假设'detail [0]'是正确的元素。
如果字段名称以[]类似于
结尾,PHP将创建一个数组并追加元素<input name="field[]" value="first value" />
<input name="field[]" value="second value" />
// is roughly the same as
$_POST['field'][] = 'first value';
$_POST['field'][] = 'second value';
答案 1 :(得分:2)
使用数组来保存提交中的值。因此,请在客户端对行计数进行分区,并将新元素命名为name[]
。这意味着$_POST['name']
将是一个数组。
在服务器端,您可以通过以下方式轻松获取行数(如果需要):
$rowcount = count($_POST['name']);
...你可以像这样循环遍历服务器端的行:
for ($i = 0; isset($_POST['name'][$i]; $i++) {}
答案 2 :(得分:1)
您可以通过foreach($ _ POST作为$ key =&gt; $ value)提取所有行。
答案 3 :(得分:1)
添加动态表单元素时,请使用数组命名方法。例如
<input type="text" name="textfield[]" />
当表单发布时,textfield[]
将是一个PHP数组,您可以轻松地使用它。
删除元素时,请确保将其从HTML DOM中删除。
答案 4 :(得分:0)
就像blejzz建议的那样,我认为如果你使用$ _GET,那么你可以循环遍历所有已发送的输入,忽略已删除的行。
foreach ($_GET as $k=>$v) {
echo "KEY: ".$k."; VALUE: ".$v."<BR>";
}
我注意到你提到“会计已删除的行”;您可以包含隐藏的输入,并在每次有人删除行时为其添加唯一值。例如,输入可以包含行号的逗号分隔值:
<input type="hidden" value="3,5,8" id="deletions" />
并包含在您的jQuery脚本中:
$('.delete').click(function(){
var num = //whatever your method for getting the row number
var v = $('#deletions').val();
v = v.split(',');
v.push(num);
v = v.join(',');
$('#deletions').val(v);
});
然后您应该能够知道删除了哪些行(如果这是您要查找的内容)。
答案 5 :(得分:0)
您可以使用POST或GET
提交后,您可以自动使用所有表单元素。您不需要重新组织表单元素名称。即使你不需要知道表单元素名称。
<form method="POST" id="fr" name="fr">.....</form>
<?php
if(isset($_POST['fr'])){
foreach($_POST as $data){
echo $data;
}
}
?>
你也应该看看这个 grafanimasyon.blogspot.com.tr/2015/02/veritabanndan-php-form-olusturucu.html
这是一个自动化表单创建程序,用于处理数据库表。您可以看到如何为表单元素命名并使用它们。