我使用以下代码制作了几个输入字段框:
<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!
我不知道如何修改原始代码,因为我是从其他网站获得的。
请帮忙!
答案 0 :(得分: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
的{{1}},因此,您将无法使用name
进行迭代,相反,您将收到所有这些元素的foreach
作为value
列表。comma-delimited
以不同方式命名每个元素,然后使用count
而不是for
在服务器端进行循环?如此处演示:http://jsfiddle.net/pratik136/7pK29/ 答案 1 :(得分:1)
您只需要在javascript函数插入的代码中添加name属性。
原件:
$(this).parent().append("<br/><input type='text' id='"+id+"'>");
Ammended:
$(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>
答案 2 :(得分:1)
只是评论:
> par_id = $(this).parent().attr('id');
变量par_id
应保留在本地,因此声明它。表达式更简单,更有效,而且输入更少:
var par_id = this.parentNode.id;
关于:
> count=$("#"+par_id+"> input").length;
正如在其他答案中所指出的那样,不使用count变量(并且应该声明它使其保持在本地)。由于您想多次使用ID为par_id
的元素,请考虑:
var par_el = this.parentNode;
var par_id = par_el.id;
var count = $(par_el).find('input').length;
在可用的情况下使用属性访问比调用函数执行相同操作更简单,更高效。