【发布时间】:2015-03-17 21:38:21
【问题描述】:
我有一个表单域,当我点击“添加”按钮时,我正在复制它。当一个 ID 重复时,我想给它添加一个递增的数字。我下面的代码是在每个新 ID 的末尾附加一个 0 而不是计数。所以#mark-description 变成了mark-description00 而不是#mark-description2。我在这里查看了其他一些类似的帖子,但无法确定我做错了什么。任何想法将不胜感激。
注意:我使用 ids 是因为我使用的 jQuery 插件需要它们。
Javascript:
$('#add-character-button').on('click', function () {
var source = $('.mark:last'),
clone = source.clone();
var count = 0;
clone.find('.copyme').val($(this).attr('title')).attr('id', function(i, val) {
return val + count;
});
clone.insertAfter('.mark:last');
});
HTML:
<div>
<input class="checkbox" id="standard" name="mark-type" type="checkbox" value="Standard Character">
<label class="no-placeholder" for="standard-character"></label>
<div class="standard-mark-container">
<div class="mark" id="mark-details">
<div class="mark-name">
<label class="placeholder" for="mark-name"><span>text</span></label>
<input class="copyme" id="mark-name" name="mark-name" placeholder="" title="Enter your mark name" type="text">
</div>
<div class="description">
<label class="placeholder" for="mark-description"><span>text</span
</label>
<textarea class="copyme" id="mark-description" name="mark-description" placeholder="" title="Enter a description"></textarea>
</div>
<div class="remove"> <a class="remove-mark-button" href="#" id="remove-character-button"><span>Remove</span></a>
</div>
</div>
</div>
<div class="add-mark"><a class="add-mark-button" href="#" id="add-character-button"><span>+ Add</span></a></div>
</div>
【问题讨论】:
-
为什么需要更改 ID?为什么对于您要专门克隆的 DOM 元素,您甚至想为其附加一个 id?您最大的问题实际上是输入字段的名称属性。这些需要更改(或使用
mark-description[]之类的数组访问符号,否则您的表单将无法正常工作。当您第一次以您尝试的方式使用 javascript/jQuery 时,您正在使用人们的一些反模式做经常落入。 -
这是fiddle,我认为它应该可以工作。
-
嗯,你所有的身份证都需要改变。
-
您的代码的问题在于您的
var count= 0行在点击事件中。每次,您都将 count 重置为 0 并将其附加到 id 上。
标签: javascript jquery forms clone