从克隆表单元素获取所有 POST

Posted

技术标签:

【中文标题】从克隆表单元素获取所有 POST【英文标题】:Getting all POST from clone form elements 【发布时间】:2012-01-01 04:57:42 【问题描述】:

这是我的小问题:

我有这个代码http://jsfiddle.net/marcelo066/d7ehQ/light/,它是从BrianGlaz 的原始http://jsfiddle.net/B7bgN/10/ 更改而来的。它从表单中克隆了一些部分。我的问题是:如何使用 php 获取此克隆值以将其存储在 mysql 数据库中?只是为了启蒙,我小提琴中的代码是更大形式的一部分,它正在工作。所以我添加了这个克隆部分,我不知道如何从 $_POST 中获取克隆值。有什么想法吗?

【问题讨论】:

请不要在问题标题中写标签...有一个特殊的秘密机制已经这样做了:标签,你已经使用了:) 【参考方案1】:

在元素属性名称上使用数组。

更改元素的名称,使name="myname"name="myname2"name="mayname3" 改为name="myname[0]"name="myname[1]"name="myname[2]"

因此,在$_POST 数组中,$_POST['myname'] 数组将是原始值和克隆值,而不是 $_POST['myname'],$_POST['myname2'],$_POST['myname3']

根据您想要处理的方式,您还可以拥有名称为 name="form[0][myname]" 和其他名称为 name="form[1][myname]" 等的原始元素。最后,原始元素值位于 $_POST['form'][0] 上,其他名称位于$_POST['form'][1]$_POST['form'][2]

我在这里做了一个小提琴http://jsfiddle.net/regilero/6kd2L/1/ http://jsfiddle.net/regilero/6kd2L/1/

基本上,除了改变我已经改变的 html 部分中处理名称的方式

$(elem).attr('id', $(elem).attr('id') + newNum).attr('name', $(elem).attr('name')+ newNum);

收件人:

    var $elem = $(elem);
    $elem.attr('id', $elem.attr('id') + newNum);
    var ename = $elem.attr('name');
    if (ename) 
        $elem.attr('name',ename.replace('form[0]','form['+newNum+']'));
    

【讨论】:

【参考方案2】:

将表单字段命名为数组元素:

<select name="dormitorios_name[0]"... >

对于克隆人来说,分别制作它

<select name="dormitorios_name[1]"... >
...
<select name="dormitorios_name[2]"... >

因此你可以在你的 php 代码中检查

$i = 0;
do 
    // save values
    $i++;
 while (isset( $_POST['dormitorios_name'][$i])

【讨论】:

以上是关于从克隆表单元素获取所有 POST的主要内容,如果未能解决你的问题,请参考以下文章

如何在不知道表单内控件名称的情况下获取表单中的 GET/POST 元素

jquery 想要获取 DOM 中的下一个输入元素

使用带有添加和删除元素条件的 jQuery 克隆表单

表单元素

第 10 章 表单元素[上]

LibreOffice Basic 从表单中获取元素