繁体   English   中英

创建动态表单元素(具有递增的名称属性)

[英]creating dynamic form elements (with incremented name attributes)

如何动态创建表单元素并为其提供动态增加的输入名称属性? 我正在使用jquery,但我愿意接受任何解决方案。

我有一个看起来像这样的div:

<div>

<input type="text" name="title1" />

<input type="text" name="body1" />

<select name="photo1" size="1">

<option value="0">foo</option>

</select>

</div>

我想克隆它n次并将名称值增加1,所以,例如,第二个div看起来像这样(只有名称值改变):

<div>

<input type="text" name="title2" />

<input type="text" name="body2" />

<select name="photo2" size="1">

<option value="0">foo</option>

</select>

</div>

使用jquery克隆div很简单:

$(document).ready(function(){
    $('.toClone').click(function(){
        $(this).clone(true).insertAfter(this);
     });
});

但我无法自动增加动态创建的div字段的名称值。
任何人都有洞察力如何做到这一点?

你用什么处理这个? 使用PHP,您可以将字段命名为title[]body[]等,以便将它们作为数组发送。 这将是最好的方法,因为克隆将是微不足道的。 据我所知,它的工作方式与其他技术类似。 无论如何,如果你真的想按照自己的方式去做:

$(document).ready(function(){
    $('.toClone').click(function(){
        var el = $(this).clone(true).insertAfter(this);
        var regex = new RegExp(/^(.+)(\d+)$/);
        $(el).find(':input').each(function() {
            var match = $(this).attr('name').match(regex);
            $(this).attr('name', match[1] + (++match[2]));
        });
    });
});

这应该够了吧。

可以使用以下命令更改名称属性字段:

var i = 1;
$(this).clone(true).attr('name', 'title' + i).insertAfter(this);

然后你只需要管理递增变量。

暂无
暂无

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

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