You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让jQuery Autocomplete表单将值分别填入两个文本框?

解决Autocomplete选中选项后填充两个文本框的问题

我来帮你搞定这个需求!你当前的Autocomplete配置里,选中选项后默认只会把value值填充到触发输入框,所以咱们需要做两个关键调整:扩展返回的选项数据,以及添加select事件回调来手动控制两个文本框的内容。

步骤1:调整前端Autocomplete的选项数据返回

首先,在source回调的$.map里,把CardId也附加到每个选项对象中,同时把value设为CardName(这样默认显示更符合预期):

$(document).ready(function () { 
    $("#CardName").autocomplete({ 
        source: function (request, response) { 
            $.ajax({ 
                url: "/CardHolderDetails/Index", 
                type: "POST", 
                dataType: "json", 
                data: { Prefix: request.term }, 
                success: function (data) { 
                    response($.map(data, function (item) { 
                        // 扩展选项对象,带上CardId,同时把value设为CardName
                        return { 
                            label: item.CardName, 
                            value: item.CardName, 
                            cardId: item.CardId 
                        }; 
                    })) 
                } 
            }) 
        }, 
        messages: { noResults: "", results: "" },
        // 步骤2:添加select事件处理函数
        select: function(event, ui) {
            // 阻止默认的填充行为(避免把value覆盖成其他值)
            event.preventDefault();
            // 填充CardName文本框
            $("#CardName").val(ui.item.label);
            // 填充CardId文本框
            $("#CardId").val(ui.item.cardId);
        },
        // 可选:添加focus事件,键盘导航时输入框显示选项名称
        focus: function(event, ui) {
            event.preventDefault();
            $("#CardName").val(ui.item.label);
        }
    }); 
})

步骤2:后端代码无需修改

你的后端Index Action已经正确返回了CardName和CardId字段,所以不需要做任何调整,前端可以直接通过ui.item.cardId拿到对应的ID值。

效果验证

现在当你在CardName输入框选中某个选项后:

  • CardName文本框会显示选中的卡片名称(比如"apple"对应的"Apple")
  • CardId文本框会自动填充对应的ID值(比如"1")

内容的提问来源于stack exchange,提问作者jschew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:36:57