每次在表格中克隆一行时,我都需要初始化自动填充字段。到目前为止,只是在页面加载时初始化我的第一行。这是我的代码http://jsfiddle.net/4XZMb/951/
function addRow(){
var numberExistingRows = 1;
// use "ADD" button to add new row
$('#add_row').click(function() {
// keep track of number of rows for input names
numberExistingRows++;
// clone a row
var $row = $('.dataRow:last').clone();
$row.find('.deleteRow').click(deleteRow);
// strip previous values and fix names of inputs
$row.find('input').each(function() {
var $input = $(this); // cache this input into jQuery object in lieu of using $(this) in below functions for clarity and performance
$input.val(""); // reset value to none
// fix names
var thisInputName = $input.attr('id');
$input.attr('id', thisInputName);
});
$('#tableSo').append($row);
return false;
});
}
答案 0 :(得分:0)
您有多个具有相同ID的元素。这不是有效的HTML。而是使用一个类来指定它是一种特定类型的自动完成,然后在新行中选择要初始化该类。
function autocompleteSo(row){
row.find( ".tableService" ).autocomplete({
source: 'services/add_services.php?servtype=1',
select: function(event, ui) {
row.find('.id_servtype').val(ui.item.id);
}
});
row.find( "soClient" ).autocomplete({
source: 'salesorders/add_sales_order.php?client=1',
select: function(event, ui) {
row.find('id_client').val(ui.item.id);
}
});
row.find( "tableProject" ).autocomplete({
source: 'salesorders/add_sales_order.php?project=1',
select: function(event, ui) {
row.find('id_project').val(ui.item.id);
}
});
}
像这样,然后在创建行时调用autocompleteSo。
<tr class="dataRow soRows">
<td>
<input type="text" class="input-medium tableService" name="tableService" />
<input type="hidden" class="id_servtype" name="id_servtype[]" />
</td>
...
答案 1 :(得分:0)
我已更新了您的jsFiddle。
我将id
更改为了类,以便与重复的id
没有冲突。
var autocompleteSo = function(row){
var $row = $(row)
$row.find( ".tableService" ).autocomplete({
source: 'services/add_services.php?servtype=1',
select: function(event, ui) {
$('.id_servtype').val(ui.item.id);
}
});
$row.find( ".soClient" ).autocomplete({
source: 'salesorders/add_sales_order.php?client=1',
select: function(event, ui) {
$('.id_client').val(ui.item.id);
}
});
$row.find( ".tableProject" ).autocomplete({
source: 'salesorders/add_sales_order.php?project=1',
select: function(event, ui) {
$('.id_project').val(ui.item.id);
}
});
}
然后在行的追加之后,我会运行此代码。
$('#tableSo').append($row);
autocompleteSo($('#tableSo tr').eq(numberExistingRows - 1));