【问题标题】:Dynamically assign name values to all children?为所有孩子动态分配名称值?
【发布时间】:2012-11-14 18:17:47
【问题描述】:

我正在克隆字段集,需要每次将名称值递增 1。

这里是 jquery:

i = 2;
$("#AddOne").click(function () {
    if (i < 11) {
        var itemNum = "<div class='iSep'>Item "+ i +"</div>";
        $("#cloneSet").clone().prepend(itemNum).appendTo("#cloneRet");
        i++;
    }
});

这是相关的 HTML:

<div id="cloneSet">
<label for="ModelNumber1">Model Number:</label>
<input type="text" name="ModelNumber1" class="required"><br />
<label for="SerialNumber1">Serial Number:</label>
<input type="text" name="SerialNumber1" class="required"><br />
<label for="ConditionofUnit1">Condition of Unit:</label>
<select name="ConditionofUnit1" class="required">
<option value="">Choose an option</option> 
<option value="Open: Defective">Open: Defective</option>
<option value="Open: Non-defective">Open: Non-defective</option>
<option value="Factory Sealed">Factory Sealed</option>
</select><br />
</div>

<div id="cloneRet"></div>

所以在包括标签在内的所有表单元素上,我想将所有 for 和 name 值从 1 增加到 i.. 有人可以帮忙吗?

【问题讨论】:

  • 使用类作为语义 id 只能应用于一个元素
  • 谢谢,改用class

标签: jquery html loops dynamic


【解决方案1】:

在进行过程中更新所有 for 和 name 属性

老实说不知道你为什么要这样做,我建议使用类

但是,这不是你的问题。

i = 2;
$("#AddOne").click(function () {
    if (i < 11) {
        var itemNum = "<div class='iSep'>Item "+ i +"</div>";
        $("#cloneSet:first").clone().prepend(itemNum).appendTo("#cloneRet")
        .children().each(function(){
             $(this).attr('name',$(this).attr('name').replace(i,i+1))
             $(this).attr('for',$(this).attr('for').replace(i,i+1))
        });
        i++;
    }
});

【讨论】:

  • 这是一个非常临时的解决方案,我需要通过 ASP 发送表单。我对 ASP 一无所知,所以我不得不对每个字段中的 10 个进行硬编码,以便在电子邮件中发送大声笑。因此,为什么我需要增加每个名称字段,因为这就是它用来获取值的原因......是的
  • 嘿,我正在使用 firebug 检查元素,但我没有看到使用此代码更改的值
  • 是的,这不起作用。我将其更改为使用类,当我添加额外的字段时,我不再自动递增,它保持在 2
猜你喜欢
  • 2020-04-24
  • 2011-07-04
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多