[英]How to set dynamic input name which generated dynamically using jquery live()
我是JavaScript的新手,我有一個帶兩個文本字段和添加按鈕的html表,現在我寫了一個小jQuery腳本,當單擊添加按鈕時,該腳本又生成了兩個文本字段,所有這一切都成功了,但是我的問題是如何輸入不同的名稱和這些動態生成的字段的ID。 我的代碼如下。
<table width="50%" border="1" cellspacing="0" cellpadding="0" class="table">
<tr>
<td>ACC_CODE</td>
<td>ACC_NAME</td>
<td>ACTION</td>
</tr>
<tr>
<td> <input type="text" class="acc_code" name="acc_code" id="acc_code"/></td>
<td> <input type="text" class="click" name="parentinput" id="parentinput" /></td>
<td> <input type="button" value="Add New" class="addNew" name="addNew" /></td>
</tr>
</table>
$(document).ready(function() {
$('.addNew').live({
click: function(){
$('.table tr:last').after('<tr><td><input type="text" class="acc_code" name="acc_codes" id="acc_codes"/></td><td><input type="text" class="click" name="parentinputs" id="parentinputs" /></td><td><input type="button" value="Add New" class="add" name="add" /></td></tr>');
});
});
請任何幫助如何生成這些字段的不同名稱和ID。
首先,從jq 1.7開始,.live被貶值。使用.delegate
所以..
$(document).ready(function() {
var idIndex=1;
$(document).delegate("click",".addNew",function() {
$('.table tr:last').after('<tr><td><input type="text" class="acc_code" name="acc_codes" id="acc_codes_'+idIndex+'"/></td><td><input type="text" class="click" name="parentinputs" id="parentinputs_'+idIndex+'" /></td><td><input type="button" value="Add New" class="add" name="add" /></td></tr>');
idIndex++;
});
});
我有個建議可能很好用,
為什么不將輸入字段設為數組,
因此,當您提交它時,它將是一組輸入組
或者您可以輕松地使名稱id基於tr索引
如name_1和id_1,name_2和id_2
我會使用on()(和off())。 您將其設置為父容器(在本例中為表),然后偵聽“ addNew”類。 每當將具有class =“ addNew”的新項目添加到表中時,它將處於活動狀態。
<table width="50%" border="1" cellspacing="0" cellpadding="0" class="table">
<tr>
<td>ACC_CODE</td>
<td>ACC_NAME</td>
<td>ACTION</td>
</tr>
<tr>
<td> <input type="text" class="acc_code" name="acc_code" id="acc_code"/></td>
<td> <input type="text" class="click" name="parentinput" id="parentinput" /></td>
<td> <input type="button" value="Add New" class="addNew" name="addNew" /></td>
</tr>
</table>
<script>
$(document).ready(function() {
$('.table').on('click', '.addNew', function() {
$('.table tr:last').after('<tr><td><input type="text" class="acc_code" name="acc_codes" id="acc_codes"/></td><td><input type="text" class="click" name="parentinputs" id="parentinputs" /></td><td><input type="button" value="Add New" class="addNew" name="add" /></td></tr>');
});
});
</script>
但請注意:在您的代碼中,您這樣做:
<input type="button" value="Add New" class="add" name="add" />
當然這是行不通的。 它必須是class =“ addNew”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.