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

如何从jQuery autocomplete返回值中获取city、speed等字段?

解决jQuery Autocomplete获取city、speed字段的问题
  • 先明确你调用console.log(ui.item.speed)的回调场景:
    jQuery Autocomplete的不同回调函数中,ui对象的结构存在差异:

    • select事件里,ui.item必然包含选中的完整数据对象,所以能正常读取city、speed;
    • 但在focus、change或source回调中,ui.item可能未定义:比如focus时未选中有效项、change时输入内容与选项不匹配,都会导致ui.item为undefined。
  • 分场景处理方案:

    1. focus事件中获取:
      先判断ui.item是否存在,再读取字段:
      focus: function(event, ui) {
        if (ui.item) {
          console.log(ui.item.city, ui.item.speed);
        }
      }
      
    2. source回调中获取:
      source的核心参数是request和response,返回数据时可直接访问字段:
      source: function(request, response) {
        $.ajax({
          url: "你的接口地址",
          data: request,
          success: function(data) {
            response($.map(data, function(item) {
              // 直接从返回的item中读取字段
              console.log(item.city, item.speed);
              return {
                label: item.label,
                value: item.value,
                city: item.city,
                speed: item.speed
              };
            }));
          }
        });
      }
      
    3. change事件中获取:
      必须先验证ui.item的有效性,因为用户可能输入非选项内容:
      change: function(event, ui) {
        if (ui.item) {
          console.log(ui.item.city, ui.item.speed);
        } else {
          // 处理输入内容不匹配选项的情况
          console.log("未选中有效选项");
        }
      }
      
  • 关键验证点:
    确保Autocomplete的source返回的每个选项对象,都包含city、speed字段——如果返回数据里没有这些字段,即便ui.item存在,也无法读取到对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:25:21