我正在尝试创建动态表单,用户可以根据需要添加动态文本字段。这是我的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冲突。请帮忙。
答案 0 :(得分:48)
您需要在此处使用.on()
的事件委派语法。变化:
$("#add").click(function() {
到
$("#buildyourform").on('click', '#add', function () {
<强> jsFiddle example 强>
答案 1 :(得分:16)
您需要使用委托事件处理程序,因为动态追加的#add
元素不会绑定到它们的click事件。试试这个:
$("#buildyourform").on('click', "#add", function() {
// your code...
});
此外,您可以通过混合行引号使您的HTML字符串更容易阅读:
var fieldWrapper = $('<div class="fieldwrapper" name="field' + intId + '" id="field' + intId + '"/>');
甚至将属性作为对象提供:
var fieldWrapper = $('<div></div>', {
'class': 'fieldwrapper',
'name': 'field' + intId,
'id': 'field' + intId
});
答案 2 :(得分:3)
在id
之后设置document
唯一身份后,您必须使用event delegation
$("#container").on("click", "buttonid", function () {
alert("Hi");
});
答案 3 :(得分:0)
点击事件未绑定到您的新元素,请使用jQuery.on
来处理点击。