Ajax 自动完成不适用于循环结果数据
Ajax autocomplete doesn't work with looping result data
我在 laravel 中有一个编辑页面,其中有多个使用 foreach 显示的数据产品,我想使用 ajax 自动完成产品名称,但它不起作用。但我没有收到任何错误消息。
这是代码
@foreach($product as $item){
<input type="text" name="product" id="product" value="{{ $item->name }}"/>
<input type="number" name="qty" id="qty" value="{{ $item->quantity }}"/>
<input type="number" name="price" id="price" value="{{ $item->price }}"/>
}
和脚本
$(document).ready(function(){
$('#product').autocomplete({
source: function(request, response){
console.log(request.term)
$.ajax({
url:"{{ route('autocompleteproduct')}}",
dataType: "json",
data: {
search: request.term
},
success: function(data){
response(data);
},error:function(){
alert('error');
}
});
},
select: function(event, ui){
$('#product').val(ui.item.label);
return false;
}
});
});
正如我在我的评论中提到的,div 上的 ID 应该是唯一的,在这里您循环遍历每个项目上都包含“#product”ID 的项目。使用 class,或者更具体地说明每个产品的实际 ID
下面我删除了每个输入的 ID,因为您没有使用任何不需要的标签。我还将它们包装在 class 中以循环遍历每个,这样我们就可以专门针对 children
@foreach($product as $item)
<div class="product-inputs" id="product-{{ $item->id }}">
<input type="text" name="product" value="{{ $item->name }}">
<input type="number" name="qty" value="{{ $item->quantity }}">
<input type="number" name="price" value="{{ $item->price }}">
</div>
@endfor
$(document).ready(function(){
$('.product-inputs').each(function() {
var id = $(this).attr('id');
var input = $('#' + id + ' input[name=product]');
input.autocomplete({
source: function(request, response){
console.log(request.term)
$.ajax({
url:"{{ route('autocompleteproduct')}}",
dataType: "json",
data: {
search: request.term
},
success: function(data){
response(data);
},error:function(){
alert('error');
}
});
},
select: function(event, ui){
input.val(ui.item.label);
return false;
}
});
});
});
我在 laravel 中有一个编辑页面,其中有多个使用 foreach 显示的数据产品,我想使用 ajax 自动完成产品名称,但它不起作用。但我没有收到任何错误消息。
这是代码
@foreach($product as $item){
<input type="text" name="product" id="product" value="{{ $item->name }}"/>
<input type="number" name="qty" id="qty" value="{{ $item->quantity }}"/>
<input type="number" name="price" id="price" value="{{ $item->price }}"/>
}
和脚本
$(document).ready(function(){
$('#product').autocomplete({
source: function(request, response){
console.log(request.term)
$.ajax({
url:"{{ route('autocompleteproduct')}}",
dataType: "json",
data: {
search: request.term
},
success: function(data){
response(data);
},error:function(){
alert('error');
}
});
},
select: function(event, ui){
$('#product').val(ui.item.label);
return false;
}
});
});
正如我在我的评论中提到的,div 上的 ID 应该是唯一的,在这里您循环遍历每个项目上都包含“#product”ID 的项目。使用 class,或者更具体地说明每个产品的实际 ID
下面我删除了每个输入的 ID,因为您没有使用任何不需要的标签。我还将它们包装在 class 中以循环遍历每个,这样我们就可以专门针对 children
@foreach($product as $item)
<div class="product-inputs" id="product-{{ $item->id }}">
<input type="text" name="product" value="{{ $item->name }}">
<input type="number" name="qty" value="{{ $item->quantity }}">
<input type="number" name="price" value="{{ $item->price }}">
</div>
@endfor
$(document).ready(function(){
$('.product-inputs').each(function() {
var id = $(this).attr('id');
var input = $('#' + id + ' input[name=product]');
input.autocomplete({
source: function(request, response){
console.log(request.term)
$.ajax({
url:"{{ route('autocompleteproduct')}}",
dataType: "json",
data: {
search: request.term
},
success: function(data){
response(data);
},error:function(){
alert('error');
}
});
},
select: function(event, ui){
input.val(ui.item.label);
return false;
}
});
});
});