【发布时间】:2011-05-17 07:07:02
【问题描述】:
我对 .click() 和 .change() 函数有疑问。我不知道为什么,但是我将它们分别放入 html 代码中,它们可以工作,但是当我像下面这样将它们放在一起时,它们就停止工作了。问题是什么? .change() 函数填充特定表格行中的表单字段。 .click() 函数在表单内的表格中添加一行或从表格中删除一行。
$(document).ready(function() {
$('select[name="produkt[]"]').change(function() {
var id = $('select[name="produkt[]"] option:selected').val();
var par = $(this).parent().parent().attr('id');
$.getJSON(
'<?php echo $head['site_link'];?>index.php/faktura/pobierzProdukt/'+id,
function(data){
alert(par);
$('#'+par+' input[name="pkwiu[]"]').val(data.product_pkwiu);
$('#'+par+' input[name="netto[]"]').val(data.product_netto);
$('#'+par+' input[name="vat[]"]').val(data.product_vat);
$('#'+par+' input[name="brutto[]"]').val(data.product_brutto);
$('#'+par+' input[name="jedn[]"]').val(data.product_jedn);
},
'json'
);
});
$('#dodajWiersz').click(function() {
var liczba = $('#produkty tr').length;
var f1 = '<?php echo form_dropdown('produkt[]',$lista,'');?></td>';
var f2 = '<?php echo form_input(array('name'=>'pkwiu[]','class'=>'short','readonly'=>'readonly'));?>';
var f3 = '<?php echo form_input(array('name'=>'netto[]','class'=>'short','readonly'=>'readonly'));?>';
var f4 = '<?php echo form_input(array('name'=>'vat[]','class'=>'mini','readonly'=>'readonly'));?>';
var f5 = '<?php echo form_input(array('name'=>'brutto[]','class'=>'short','readonly'=>'readonly'));?>';
var f6 = '<?php echo form_input(array('name'=>'jedn[]','class'=>'mini','readonly'=>'readonly'));?>';
var f7 = '<?php echo form_input(array('name'=>'ilosc[]','class'=>'short'));?>';
var f8 = '<?php echo form_input(array('name'=>'knetto[]','class'=>'short','readonly'=>'readonly'));?>';
var f9 = '<?php echo form_input(array('name'=>'kvat[]','class'=>'short','readonly'=>'readonly'));?>';
var f10 = '<?php echo form_input(array('name'=>'kbrutto[]','class'=>'short','readonly'=>'readonly'));?>';
var row = '<tr id="wiersz-'+liczba+'"><td>'+liczba+'</td><td>'+f1+'</td><td>'+f2+'</td><td>'+f3+'</td><td>'+f4+'</td><td>'+f5+'</td><td>'+f6+'</td><td>'+f7+'</td><td>'+f8+'</td><td>'+f9+'</td><td>'+f10+'</td>';
$('#produkty').find('tbody').append(row);
});
$('#usunWiersz').click(function() {
$('#produkty').find('tbody tr:last').remove();
});
});
【问题讨论】:
-
不是粘贴php代码,而是粘贴生成的脚本(从浏览器中的“查看源代码”复制)
-
请不要这样混合 PHP 和 jQuery,这会让 Jon Skeet 哭泣。
-
它在 .change() 函数与 .click() 函数分开时起作用
-
我不认为混合php和js是这里的问题。
-
@Gary Green,你是对的。由于某些原因,PHP 代码是问题所在。我改用了 .clone() 方法,它可以工作。
标签: jquery click conflict onchange