0

我使用以下代码制作了几个输入字段框:

<script type='text/javascript'>//<![CDATA[ 
    $(window).load(function(){
        $('.add').click(function(){
            par_id=$(this).parent().attr('id');
            count=$("#"+par_id+"> input").length;
            id=par_id.toString();
            $(this).parent().append("<br/><input type='text' id='"+id+"'>");
        });
    });//]]>  
</script>

我正在使用上述代码来创建可以动态添加新字段的输入字段。

此代码创建多个相同的表单 ID,但我希望它创建多个相同的表单名称,以便我可以使用 foreach 命令将其完全输出。

现在我想使用这个将输入数据输出到 PHP

<?php
    foreach($_POST['formid'] as $value) {
        echo "$value <br />";
    }
?>

我想问的是 foreach 命令只会从表单名称输出数据,但我使用的 javascript 代码通过表单 id创建更多输入表单,而不是表单名称。

所以我需要一个代码来创建更多带有表单名称而不是表单id的输入框!

我不确定如何修改原始代码,因为我是从另一个网站获得的。

请帮忙!

4

3 回答 3

1

@Chung - 我试图理解您的问题并提出以下建议,但您必须了解您的问题非常模糊、令人困惑并且可能具有误导性。

对代码进行最小的更改:

$(document).ready(function() {
    $('.add').click(function() {
        par_id = $(this).parent().attr('id');
        par_name = $(this).parent().attr('name');
        count = $("#" + par_id + "> input").length;
        id = par_id.toString();
        $(this).parent().append("<br/><input type='text' name='" + par_name + "' id='" + id + "'>");
    });
});​

如这里演示:http:
//jsfiddle.net/pratik136/2nV3m/

一些疑问/建议:

  • 为什么count不使用时会出现?par_id始终是一个字符串,但您将其转换为string,这表明您可能期望count在某个地方出现?
  • 在我建议的状态下,form包含多个input具有相同 s 的 s name,因此,您将无法使用 迭代它foreach,而是将value所有这些元素的 s 作为comma-delimited列表接收。
  • 然后,您是否可能希望使用 the 来不同地命名每个元素count,然后在服务器端使用for而不是循环foreach?在这里演示:http: //jsfiddle.net/pratik136/7pK29/
于 2012-10-08T00:49:12.977 回答
1

您只需要在 javascript 函数插入的代码中添加一个名称属性。

原来的:

$(this).parent().append("<br/><input type='text' id='"+id+"'>");

修正:

$(this).parent().append("<br/><input type='text' name='yourinputname' id='"+id+"'>");

编辑:事后才想到......

如果 ID 没有任何用途,只需要 name 属性,则此代码的大部分是不必要的,可以简化为以下代码。

<script type='text/javascript'>//<![CDATA[ 
    $(window).load(function(){
        $('.add').click(function(){
            $(this).parent().append("<br/><input type='text' name='yourinputname');
        });
    });//]]>  
</script>
于 2012-10-08T02:03:54.567 回答
1

只是一个评论:

> par_id = $(this).parent().attr('id');

该变量par_id应保持在本地,因此请声明它。表达式更简单、更高效且更少键入:

var par_id = this.parentNode.id;

关于:

> count=$("#"+par_id+"> input").length;

正如在其他答案中指出的那样,不使用 count 变量(并且应该声明它以使其保持本地状态)。由于您想par_id多次使用具有 id 的元素,请考虑:

var par_el = this.parentNode;
var par_id = par_el.id;
var count = $(par_el).find('input').length;

在可用的地方使用属性访问比调用函数来做同样的事情更简单、更有效。

于 2012-10-08T04:12:15.910 回答