Javascript jquery自动完成-所选值从文本框中消失
我编写了一个自定义jquery autocomplete函数,用于显示某些值和文本字段,以便在选择值时根据以下代码进行更新:Javascript jquery自动完成-所选值从文本框中消失,javascript,jquery,jquery-ui,jquery-autocomplete,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui,Jquery Autocomplete,Jquery Ui Autocomplete,我编写了一个自定义jquery autocomplete函数,用于显示某些值和文本字段,以便在选择值时根据以下代码进行更新: <input type="text" name="promoitem" id="promoitem"> $('#promoitem').autocomplete({ source: "BckProcesses/GetPromoItems.asp", create: function() { $(this
<input type="text" name="promoitem" id="promoitem">
$('#promoitem').autocomplete({
source: "BckProcesses/GetPromoItems.asp",
create: function() {
$(this).data('ui-autocomplete')._renderItem = function(ul, item) {
return $('<li>')
.append('<a>' + item.promodesc + '</a>')
.appendTo(ul);
}
},
select: function(event, ui) {
$('#promoitem').val(ui.item.promodesc);
$('#promocost').val(ui.item.promocost);
$('#promoqty').val(ui.item.qty);
$('#hidden_promo_item_id').val(ui.item.id);
}
});
但是,当我从ul中选择值时,除了promotItem文本字段之外,所有内容都会被填充。该字段变为空白
有人能告诉我是什么引起的吗
谢谢
Sam由于您在选择处理程序中提供自己的逻辑,因此需要防止默认操作,即在输入中放置ui.item.value 现在,您的代码正在运行,然后jQueryUI立即尝试将ui.item.value放入输入中,这解释了空值 所以实际上,您需要做的就是调用event.preventDefault;或返回错误;从选择处理程序:
在花了一个小时之后,终于到了jQueryUIAutoComplete将值设置为默认值的地步 只有一行需要放置并阻止Jquery默认函数才能完成这项工作 //pincode列表自动完成
$('input[name=\'pincode\']').autocomplete({
'source': function (request, response) {
$.ajax({
url: 'index.php?route=seller/pincode/pincodeAutocomplete&filter_name=' + encodeURIComponent($('input[name=\'pincode\']').val()),
dataType: 'json',
success: function (json) {
json.unshift({
pincode_id: '',
pincode: '-- None --'
});
response($.map(json, function (item) {
return {
label: item['pincode'],
value: item['pincode_id']
}
}));
}
});
},
'select': function (event, ui) {
event.preventDefault();
$('input[name=\'pincode\']').val(ui.item.label);
$('input[name=\'pincode_id\']').val(ui.item.value);
}
});
非常感谢你。那确实有效。我认为通过覆盖,它会处理默认值:
select: function(event, ui) {
$('#promoitem').val(ui.item.promodesc);
$('#promocost').val(ui.item.promocost);
$('#promoqty').val(ui.item.qty);
$('#hidden_promo_item_id').val(ui.item.id);
event.preventDefault(); // <---
}
$('input[name=\'pincode\']').autocomplete({
'source': function (request, response) {
$.ajax({
url: 'index.php?route=seller/pincode/pincodeAutocomplete&filter_name=' + encodeURIComponent($('input[name=\'pincode\']').val()),
dataType: 'json',
success: function (json) {
json.unshift({
pincode_id: '',
pincode: '-- None --'
});
response($.map(json, function (item) {
return {
label: item['pincode'],
value: item['pincode_id']
}
}));
}
});
},
'select': function (event, ui) {
event.preventDefault();
$('input[name=\'pincode\']').val(ui.item.label);
$('input[name=\'pincode_id\']').val(ui.item.value);
}
});