首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery自动完成自定义显示多栏第二部分

JQuery自动完成自定义显示多栏第二部分
EN

Stack Overflow用户
提问于 2011-11-29 03:05:39
回答 1查看 4.2K关注 0票数 0

我试图在他们的自定义示例中获得一个类似于:Here at jquery ui的自动补全。

这将使用ajax调用,而不是硬编码的数据。我希望显示两列(一个值和一个描述)。当用户输入时,.val()被传递到ajax页面,它提供建议。第一列将用于该值。

我能够使用一个简单的单列示例返回单个列,但不能返回多个值。我认为这很简单,因为它是示例代码的重新散列。非常感谢您的帮助。

代码语言:javascript
复制
<script>
$(document).ready(function() { 
  $('#myinputbox').autocomplete({ 
      minLength: 4, 
      source: function(request, response){             
          var ajaxparam = $('#myinputbox').val(); 
          ajaxparam = escape(ajaxparam);                                                    
          var querystring = "?term=" + ajaxparam;  
          $.ajax({
              url:      'ajax/jsonencode.php'+querystring,
              beforeSend: function(){
                alert("beforeSend");
              },
              async:    true,
              dataType: "json"
          });
      },
      focus: function ( event,ui ){     
          $( "#myinputbox" ).val( ui.item.value );
          return false;            
      },  
      select: function( event, ui ) {          
              $( "#myinputbox" ).val( ui.item.value );
              return false;
      }        

  })
  .data( "autocomplete" )._renderItem = function( ul, item ) {
          return $( "<li></li>" )
                  .data( "item.autocomplete", item )
                  .append( "<a>" + item.value + "<br>" + item.desc + "</a>" )
                  .appendTo( ul );
  };  
}); 
</script>

beforeSend触发正常。如果我添加:

代码语言:javascript
复制
                success: function(data){
                  alert(data);
                }

对于dataType,它会正确地提醒我对象对象。

json看起来像这样:

代码语言:javascript
复制
[
  {
      "value": "value1",
      "desc": "Description 1"
  },
  {
      "value": "value2",
      "desc": "Description 2"
  }
]

返回的json通过了jsonlint的验证。

_renderItem似乎不工作。

任何指针或解决方案都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-29 03:26:52

$.ajax调用中,您没有指定success回调:

代码语言:javascript
复制
$.ajax({
    url: 'ajax/jsonencode.php'+querystring,
    beforeSend: function(){
        alert("beforeSend");
    },
    async:    true,
    dataType: "json"
});

由于小部件希望您调用response函数来提供建议,因此您应该这样做:

代码语言:javascript
复制
$.ajax({
    url: 'ajax/jsonencode.php'+querystring,
    beforeSend: function(){
        alert("beforeSend");
    },
    async:    true,
    dataType: "json",
    success: response
});

这假设您的数据至少有一个labelvalue属性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8300908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档