使用JQUERY在动态创建的表单中命名两个不同的输入

时间:2014-08-18 18:50:16

标签: javascript jquery html forms dynamic

我正在编写一个程序,需要将文本框和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>

提前感谢您的帮助

2 个答案:

答案 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);

请参阅http://jsfiddle.net/bk40jd9f/1/