ajax脚本仅适用于页面刷新时的第一行
问题描述:
我的脚本有问题。它的目的是根据下拉列表中的值在字段中显示一些值。 当我触发其他正在添加或删除具有相同字段的表单中的新行的脚本,但是不同的行ID时,它将停止为新添加的行工作。ajax脚本仅适用于页面刷新时的第一行
<script>
<?php echo 'var lista = '.form_dropdown('produkt[]',$lista).';'?>
$(document).ready(function() {
$('select[name="produkt[]"]').change(function() {
var id = $('select[name="produkt[]"] option:selected').val();
var par = $(this).closest('tr').attr('id');
$.getJSON(
'<?php echo $head['site_link'];?>index.php/faktura/pobierzProdukt/'+id,
function(data){
var id = $('#'+par);
$('input[name="pkwiu[]"]',id).val(data.product_pkwiu);
$('input[name="netto[]"]',id).val(data.product_netto);
$('input[name="vat[]"]',id).val(data.product_vat);
$('input[name="brutto[]"]',id).val(data.product_brutto);
$('input[name="jedn[]"]',id).val(data.product_jedn);
},
'json'
);
});
$('#dodajWiersz').click(function() {
var liczba = $('#produkty tr').length;
var inputArray = [
'1',
lista,
'<input type="text" name="pkwiu[]" class="short" readonly="readonly"/>',
'<input type="text" name="netto[]" class="short" readonly="readonly"/>',
'<input type="text" name="vat[]" class="mini" readonly="readonly"/>',
'<input type="text" name="brutto[]" class="short" readonly="readonly"/>',
'<input type="text" name="jedn[]" class="mini" readonly="readonly"/>',
'<input type="text" name="ilosc[]" class="short"/>',
'<input type="text" name="knetto[]" class="short" readonly="readonly"/>',
'<input type="text" name="kvat[]" class="short" readonly="readonly"/>',
'<input type="text" name="kbrutto[]" class="short" readonly="readonly"/>'
];
var tdString = '<td>'+inputArray.join('</td><td>')+'</td>';
if($('#produkty tbody tr').length>0) {
var row = '<tr id="wiersz-'+liczba+'">'+tdString+'</tr>';
$('#produkty').find('tbody').append(row);
$('#produkty tr:last td:first-child').text(liczba);
}
else {
var row = '<tr id="wiersz-1">'+tdString+'</tr>';
$('#produkty').find('tbody').append(row);
}
});
$('#usunWiersz').click(function() {
$('#produkty').find('tbody tr:last').remove();
});
});
</script>
我认为问题是$(document).ready()函数。但我解决不了。
更新: 看来,DOM没有更新。我可以在Firebug中看到新的HTML结构,但在源视图中是旧结构。我认为这很重要。
答
$(本).closest( 'TR')ATTR( 'ID'),你可能总是有相同的ID
和
VAR行= '' + tdString + ''。
你总是追加相同的ID。
答
答案是改变:var id = $('select[name="produkt[]"] option:selected').val();
转换为var id = $(this).val();
它似乎是一个选项的问题:selected。
var row工作正常,但也许你是正确的$(this).closest().....我会检查出来。 更新: 它也能正常工作 – sunpietro 2011-05-18 05:16:57
我改了一点代码。我用live()替换了change()和click()函数。它似乎工作一点,但我不能让它适用于除第一个行之外的所有行。其他行从第一行的选择菜单中获取值。 – sunpietro 2011-05-18 05:52:50
问题与URL不变。 getJSON返回数据时如何使它为空? – sunpietro 2011-05-18 06:12:51