javascript - jquery 自动完成 - 选定的值从文本框中消失

标签 javascript jquery jquery-ui jquery-autocomplete jquery-ui-autocomplete

我已经编写了一个自定义的 jquery 自动完成功能来显示某些值和文本字段以根据以下代码在选择值时更新:

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

这是源文件 (GetPromoItems.asp) 返回的内容

[{"id": "1", "promodesc": "Ipad 4 ", "promocost": "200", "qty": "1"},{"id": "2", "promodesc": "Village Tickets", "promocost": "20", "qty": "2"}]

但是,当我从 ul 中选择值时,除了 promoitem 文本字段外,所有内容都会被填充。该字段变为空白。

谁能告诉我是什么原因造成的?

谢谢 山姆

最佳答案

由于您在 select 处理程序中提供了自己的逻辑,因此您需要阻止默认操作,即将 ui.item.value 放在 输入

现在,您的代码正在运行,然后 jQueryUI 立即尝试将 ui.item.value 放入 input,这解释了空值。

因此,实际上您需要做的就是从 select 处理程序调用 event.preventDefault();return false;:

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

关于javascript - jquery 自动完成 - 选定的值从文本框中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26984071/

相关文章:

php - JQUERY 从 TXT 文件加载,在下拉列表中显示 VALUE,获取用户选择 - 需要逻辑和 JS 帮助

javascript - jquery 验证文本输入数组仅验证第一个字段

jquery - 如何在谷歌地图上触发places_changed而无需手动输入

ruby-on-rails - jQuery UI 日期选择器不适用于 Rails

javascript - jQuery 拖放速度变慢

html - body 背景图像导致 FPS 在 iPad 的 safari 中下降

javascript - 有没有一种在 Javascript 中卡住对象数组的好方法?

javascript - 使用 SSO 验证 Outlook WEB 加载项

javascript - 循环遍历数组对象以查找重复项。为什么一个元素返回 "undefined"?

javascript - Salesforce - $.ajax 调用的成功处理程序