jquery autocomplete'禁用'显示所有条款

时间:2014-07-27 14:12:11

标签: javascript jquery autocomplete

嘿,有人可以引导我摆脱这个问题.... 我成功创建了jquery自动完成功能,但我的问题是自动填充建议显示了所有可用的标签。自动填充功能会显示与搜索字词甚至不匹配的结果。我的意思是它显示所有可用的标签。他们的任何解决方案都只显示匹配的标签。这是java函数。 任何帮助将很高兴。谢谢

$(document).ready(function () {
   $("#search-title").autocomplete({
     source: function ( request, response ) {
        $.ajax({
           url: "availabletags.json",
           dataType: "json",
           data: {
                    term: request.term      
           },
           success: function (data) {
              response( $.map( data.stuff, function ( item ) {
                 return {
                    label: item.label,
                    value: item.value
              };
           }));
        }
        });
        },
       minLength: 2,

       select: function (event, ui) {
       $(event.target).val(ui.item.label);
       window.location = ui.item.value;
       return false;
     }
   });
});

编辑: - 这是Json文件

    {"stuff":[ {"label" : "Dragon", "value" : "eg.com"}  , 
     {"label" : "testing", "value" : "eg2.com"}]}

成功编辑的代码

      <script>
    $(document).ready(function () {
    $("#search-title").autocomplete({
    source: function ( request, response ) {
    $.ajax({
        url: "availabletags.json",

       dataType: "json",
    success: function (data) {
    var sData = data.stuff.filter(function(v) { 
      var re = new RegExp( request.term, "i" );
    return re.test( v.label );

    });
    response( $.map( sData, function ( item ) {
                return {
                    label: item.label,
      value: item.value
                };
            }));
        }
       });
      },
      minLength: 2,
      focus: function (event, ui) {
      this.value = ui.item.label;
       event.preventDefault(); // Prevent the default focus behavior.
      },

        select: function (event, ui) {
          $(event.target).val(ui.item.label);
         window.location = ui.item.value;
         return false;
         }
         });
         });
         </script>

1 个答案:

答案 0 :(得分:0)

以下是您要进行的更改:

    dataType: "json",
    success: function (data) {
        var sData = data.stuff.filter(function(v) { 
            return v.value.indexOf( request.term ) > -1; 
        });
        response( $.map( sData, function ( item ) {

此搜索将由value完成。要按label进行搜索,换句话说,要将用户的输入与JSON中的标签进行比较,请使用以下代码:

return v.label.indexOf( ........

<强>更新

要使搜索大小写不敏感,请使用以下命令:

var re = new RegExp( request.term, "i" );
return re.test( v.label );

而不是return v.value.indexOf( request.term ) > -1;