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

jQuery Autocomplete搜索失败时返回指定编码9998的实现求助

解决方案

首先明确:jQuery UI Autocomplete的error回调仅处理AJAX请求异常场景(比如网络错误、服务器返回500错误),无匹配项属于请求成功但返回空结果的情况,需要通过response回调或change事件来处理。

方案1:通过response回调检查结果

在Autocomplete初始化时添加response回调,判断返回的结果数组长度,为空则设置编码9998:

$("#search-input").autocomplete({
    source: function(request, response) {
        $.ajax({
            url: "你的接口地址",
            data: { term: request.term },
            dataType: "json",
            success: function(data) {
                response(data); // 将接口返回结果传给Autocomplete组件
            }
        });
    },
    response: function(event, ui) {
        // 验证返回结果是否为空
        if (ui.content.length === 0) {
            // 将9998填充到指定输入框
            $("#target-id-input").val("9998");
        }
    },
    select: function(event, ui) {
        // 匹配成功时填充正常ID
        $("#target-id-input").val(ui.item.id);
        return false;
    }
});

方案2:通过change事件验证输入

如果需要在用户离开输入框时,确认输入内容不在匹配列表中再设置编码,可使用change事件:

$("#search-input").autocomplete({
    source: "你的接口地址",
    select: function(event, ui) {
        $("#target-id-input").val(ui.item.id);
        $(this).val(ui.item.label);
        return false;
    },
    change: function(event, ui) {
        // ui.item为空说明输入内容不在匹配列表内
        if (!ui.item) {
            $("#target-id-input").val("9998");
            // 可选:清空输入框或提示用户
            // $(this).val("");
        }
    }
});

注意事项

  • 确保你的接口在无匹配项时返回空数组,而非报错,这样response或change才能正确捕获场景。
  • 使用change事件时,若用户手动输入了与列表项完全一致的内容,ui.item会存在,不会触发9998的设置,符合预期逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:19:53