Javascript jquery自动完成-所选值从文本框中消失

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

我编写了一个自定义jquery autocomplete函数,用于显示某些值和文本字段,以便在选择值时根据以下代码进行更新:

<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);
        }
    });