【发布时间】:2013-08-13 22:32:23
【问题描述】:
我正在尝试创建动态表单,用户可以在其中根据他们的要求添加动态文本字段。这是我的jQuery代码..
$(document).ready(function() {
$("#add").click(function() {
var intId = $("#buildyourform div").length +1;
var fieldWrapper = $("<div class=\"fieldwrapper\" name=\"field" + intId + "\" id=\"field" + intId + "\"/>");
var fName = $("<input type=\"text\" name=\"name\" class=\"fieldname\" id=\"tb"+ intId +"_1\"/>");
var lname = $("<input type=\"text\" name=\"email\" class=\"lastname\" id=\"tb"+ intId +"_2\"/>");
var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" />");
var addButton = $("<input type=\"button\" class=\"add\" id=\"add\" value=\"+\" />")
removeButton.click(function() {
$(this).parent().remove();
});
fieldWrapper.append(fName);
fieldWrapper.append(lname);
fieldWrapper.append(removeButton);
fieldWrapper.append(addButton);
$(this).remove();
$("#buildyourform").append(fieldWrapper);
});
});
而 Html 代码是 ...
<fieldset id="buildyourform">
<legend>Build your own form!</legend>
<div class="fieldwrapper" name="field1" id="field1" />
<input type="text" name="name" class="fieldname" id="tb1_1" />
<input type="text" name="email" class="lastname" id="tb1_2" />
<input type="button" value="+" class="add" id="add" />
</div>
</fieldset>
<input type="submit" value="send" id="asdasd" name="submit" />
也请查看我的JSFiddle。
我的问题是当用户第一次单击“+”按钮然后单击功能正常工作时,它会将两个文本字段添加到我的字段集中。但是之后当我点击“+”按钮时,它不会触发点击功能。可能是id冲突。请帮忙。
【问题讨论】:
-
May be id conflict.- 你试过自己解决冲突吗? -
您在新按钮上重新使用了 ID“add”。 “id”属性的值只能在页面上使用一次。 edit 哦,等等,你删除了原来的按钮。那么这就是问题所在:)
-
我遇到了同样的问题,但我的元素不是动态生成的,它是页面上的普通 ol' 元素。我相信这是由于 Knockout.js 的干扰。
标签: javascript jquery html