我正在编写一个程序,需要将文本框和textarea动态添加到表单中。我正在使用克隆功能。不幸的是,我似乎无法弄清楚如何让每个盒子都有一个唯一的ID。这是我的Jquery:
<script type="text/javascript">
$(document).ready(function() {
$('#addButton').click(function() {
var num = $('.clonedInput').length;
var newNum = new Number(num + 1);
var newElem = $('#form1').clone().attr('id', 'form' + newNum);
newElem.children(':first').attr('id', 'name' + newNum).attr('name', 'name');
$('#form' + num).after(newElem);
$(newElem).append(
$(document.createElement('input')).attr({
id: 'myCheckbox' + newNum
,name: 'myCheckbox' + newNum
,value: 'myValue'
,type: 'checkbox'
})
);
});
})
</script>
我的HTML:
<form method="post" form action="save3.php">
<div name="forms" id="form1" class="clonedInput" width="800px">
<label></label><textarea rows="4" cols="50" id="text1" class="text" name="text[]" ></textarea>
<label></label><input type="text" id="title1" class="title" name="title[]">
</div>
</form>
提前感谢您的帮助
答案 0 :(得分:0)
您的代码错误:http://jsfiddle.net/mig1098/bk40jd9f/
$(document).ready(function() {
$('#addButton').click(function() {
var num = $('.clonedInput').length;
var newNum = new Number(num + 1);
var newElem = $('#form1').clone().attr('id', 'form' + newNum);
newElem.children(':first').attr('id', 'name' + newNum).attr('name', 'name');
$('#form' + num).after(newElem);
$(newElem).append(
$(document.createElement('input')).attr({
id: 'myCheckbox' + newNum
,name: 'myCheckbox' + newNum
,value: 'myValue'
,type: 'checkbox'
})
);
});
})
答案 1 :(得分:0)
你的问题似乎是你只是重命名第一个孩子的属性值,正确获取id属性值“name2”的标签:
newElem.children(':first').attr('id', 'name' + newNum).attr('name', 'name');
但我看不到任何以相同方式处理textarea和输入字段的代码。有几种方法可以做到这一点,其中一种方法是:
$('#form' + newNum + ' textarea').attr('id','text' + newNum);
$('#form' + newNum + ' input[type="text"]').attr('id','title' + newNum);