【发布时间】:2014-11-10 09:53:29
【问题描述】:
以下 jQuery 可以很好地添加行,并从 php/mysql 文件填充选择列表。我遇到的问题是价格字段正在自动填充并在添加的每个新行上选择更改时更改...但是如果您返回并尝试更改已添加的行之一,它不起作用。例如,如果您添加 4 个空白行,然后尝试返回并选择产品,它只会填充最后一行的价格。或者,如果您在添加新行之前添加每一行并选择产品,然后返回并尝试更改产品,则之前选择的价格将保持不变。有任何想法吗?
编辑1添加了html
EDIT 2 将 jQuery change(function() 更改为 on()... 仍然可以正常工作。自动完成功能仅适用于添加的最后一行。
var count = 0;
$(document).ready(function(){
$('p#add_field').click(function(){
count += 1;
$('#addingContainer').append('<label>Product or Service</label><select id="product_' + count + '" name="products[]'+ '" ><option value=""></option>');
$.getJSON('includes/productrow.php', function(data){
var select = $('#product_' + count + '');
$.each(data, function(key, val) {
$('<option/>').attr('value', val.product_id)
.attr('data-price', val.price)
.html(val.product)
.appendTo(select);
});
$('#addingContainer').append('</select> <label>Price</label><input type="text" id="price_' + count + '" name="prices[]' + '" class="price" ><br>');
});
$('#addingContainer').on('change', 'select[id="product_' + count + '"]', function(){
$('#price_' + count +'').val($('select[id="product_' + count + '"] option:selected').data('price'));
});});});
HTML:
<div id="addingContainer" class="pure-control-group">
<p id="add_field"><a href="#"><span>Add Products</span></a></p>
</div>
【问题讨论】:
-
由于您是动态添加新字段,因此您需要编辑您的选择更改函数以使用 jquery 的 on() 函数api.jquery.com/on
标签: php jquery mysql json autocomplete