Codeigniter和jQuery用于动态输入

时间:2011-06-05 02:25:52

标签: jquery codeigniter

这是我的第一个问题,如果你能帮助我,我会很高兴。

我必须捕获一组动态输入的值,我用jQuery生成输入。我不知道这是一个很好的解决方案,最后使用相同的名称括号括号:

<!-- first set of entries -->
<input type="text" name="nombre_contacto[]">
<input type="text" name="mail_contacto[]">

<!-- second set of entries -->
<input type="text" name="nombre_contacto[]">
<input type="text" name="mail_contacto[]">

<!-- etc... -->  

或者只是在名称的末尾使用一个计数器,如下所示:

<!-- first set of entries -->
<input type="text" name="nombre_contacto1">
<input type="text" name="mail_contacto1">

<!-- second set of entries -->
<input type="text" name="nombre_contacto2">
<input type="text" name="mail_contacto2">

<!-- etc... -->  

我如何抓住控制器上的每一件物品?这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

你最好的选择是使用数组,正如你在第一个例子中所做的那样。

要获得所有结果,这样的结果将起作用:

$names = $this->input->post('nombre_contacto');
$emails = $this->input->post('mail_contacto');

这两个变量现在都是数组,它们的值是用户输入的任何值,它们的键是它们在表单中出现的顺序。

这样的事情可以给你一个想法:

foreach ($names as $key => $value)
{
    $contact[$key] = $value;
}
foreach ($emails as $key => $value)
{
    $contact[$key] .= ' - '.$value;
}

现在您有了一个新数组,其值如下:John Smith - jon@smith.com

这只是一个例子,我不知道你对这些值做了什么。

还有一个例子:如果出于某种原因你必须访问发布的第三个名字,你可以使用:

echo $_POST['nombre_contacto'][2]; // Arrays have 0 based index, so this is #3

这是包含brackets[]的输入名称。在我看来,这绝对是最好的方式。你不需要猜测有多少输入,因为它将是一个数组。

只是为了澄清:在字段名称中使用括号会在输入到服务器时将输入转换为数组,从而可以使用相同的字段名称发布多个值。没有括号,它将是一个字符串值技术上是一个不同的字段。