代码之家  ›  专栏  ›  技术社区  ›  Kung Fu Ninja

jquery自动完成问题

  •  1
  • Kung Fu Ninja  · 技术社区  · 17 年前

    我正在努力使这个插件适用于我的场景。 我的数据格式如下:

    “70625.1-800 GOT JUNK COMMERCIAL SERVICES(USA)LLC”, “42755.103RD ST SAND LLC”]

    第一部分是公司的id,我需要在选择数据后保存该值。

    我的代码:

     <script type="text/javascript">
     $().ready(function() {
    $("#suggest1").focus(function(){
              $("#suggest1").autocomplete(cities,
                  {
           formatResult: function(data) {
            return data.split(".")[1];
           }
    });
     });
    
    });
    </script>
    
    <form autocomplete="off">
        <p>
            <label>Single City (local):</label>
            <input type="text" id="suggest1" />
            <input type="hidden" id="suggest1ID"/>
            <input type="button" value="Get Value" />
        </p>
    </form>
    

    Firebug告诉我“数据分割”不是一个函数。如何将结果格式化为: a) 获取#suggest1的文本 b) 获取id并将其保存在suggest1ID中。例如:$(“#suggest1ID”)。val(数据分割(“.”)[0]) ?

    哦,还有一件事:关于第二个focus(),有没有办法清除文本框中的第一个选择?

    提前谢谢。

    4 回复  |  直到 17 年前
        1
  •  0
  •   Ben Shelock    17 年前

    您的数据已经在一个数组中,它不是从服务器馈送的。所以你不必做分裂的事情。

        2
  •  0
  •   fredrik    17 年前

    我不熟悉自动完成,但如果你想要一个数组,你只需要显示名称,你可以使用这个。希望有帮助。

    formatResult: function(data) {
        var i,
            l = data.length,
            displayNames;
    
        for (i = 0, i < l; (i += 1) {
            displayNames.push(data[i].split('.')[1]);
        };
    
        return displayNames;
    }
    

    如果不起作用,请检查数据实际上是数组,而不是字符串。

    ..弗雷德里克

        3
  •  0
  •   ekhaled    17 年前

    以弗雷德里克的例子为基础,我认为这将适用于自动完成

    function t(data) {
        var i;
        var l = data.length;
        var displayNames=[];
    
        for (i = 0; i < l; i++) {
            displayNames.push(data[i].split('.')[1]);
        };
    
        return displayNames.join(" ");
    }
    

    你看,用你的数据。split(),您正试图将“string”函数应用于“array”, 您必须找到数组中的每个元素并将其单独拆分,然后将其重新连接并返回到函数

    希望能把事情弄清楚。。。

        4
  •  0
  •   Kung Fu Ninja    17 年前

    我最后提到了这一页: http://docs.jquery.com/Plugins/Autocomplete

    创建了以下格式的数据变量:

    并使用:

      $("#sVendor").focus(function(){
     $("#sVendor").autocomplete(vendors, {formatItem: function(item) {
                  return item.text; 
               }
            }).result(function(event,item) {
              //alert(item.id);
              $("#sVendorID").val(item.id);
           });
    });