我的腳本有問題。它的目的是根據下拉列表中的值在字段中顯示一些值。 當我觸發其他正在添加或刪除具有相同字段的表單中的新行的腳本,但是不同的行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結構,但在源視圖中是舊結構。我認爲這很重要。
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