繁体   English   中英

提取动态创建的表单数据

[英]Extract dynamically created form data

我刚刚开始使用jQuery。 我一直在使用它的一件事是向表的一部分添加行。

当我添加新行时,我会给所有表单元素名称,例如'name_' + rowNumber name 'name_' + rowNumber 每当我添加一行时,我都会增加rowNumber

我通常也有一个“删除行”按钮。 即使删除了一行, rowNumber计数也保持不变,以免重复元素名称。

提交表单后,我将一个隐藏元素设置为等于jQuery中的rowNumber值。 然后在PHP中,我从1到rowNumber值进行计数。 然后,对于每个值,我执行一个isset($_REQUEST['name'_ . index]) 这就是我提取在jQuery中删除行后剩余的表单元素的方式。

这里有没有人有更好的技术来处理已删除的行?

对于某些较简单的表,我们使用字段名,例如'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';

使用数组将值保留在提交中。 因此,在客户端对行计数进行装箱,然后将新元素name[] 这意味着$_POST['name']将是一个数组。

这样,在服务器端,您可以通过以下方式轻松获取行数(如果需要):

$rowcount = count($_POST['name']);

...并且您可以像这样在服务器端循环浏览各行:

for ($i = 0; isset($_POST['name'][$i]; $i++) {}

您可以通过执行foreach($ _ POST as $ key => $ value)提取所有行。

添加动态表单元素时,请使用数组命名方法。 例如

<input type="text" name="textfield[]" />

发布表单后, textfield[]将是一个PHP数组,然后可以轻松使用它。 删除元素时,请确保将其从HTML DOM中删除。

您可以使用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

这是一个自动的表单创建者,负责计算数据库表。 您可以看到如何为表单元素命名并使用它们。

就像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);
});

然后,您应该能够知道删除了哪些行(如果这是您要查找的内容)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM