javascript - formatResult 和 formatItem 选项在 JQuery 自动完成中有什么作用?

标签 javascript jquery django

我有点困惑,JQuery Autocomplete 插件中的 formatResult 和 formatItem 是做什么的?

我有一个返回逗号分隔字符串的函数(来自 Django),但我的自动完成功能无法将字符串拆分为单独的条目/行,我如何使用自动完成功能实现此目的?

例如,返回的结果看起来像这样,这就是自动完成显示的内容:- ["一个","oneTwo", "Onethree", "anotherOne"]

我希望在自动完成字段中显示时像这样拆分:-

one
oneTwo
Onethree
anotherOne

我觉得我可以使用 formatResult 和 formatItem,但我不知道如何使用,那里没有很好的例子!!

我在 html 模板中的代码:

 function autoFill(){
           $("#tags").autocomplete("/taglookup/", {
        width: 320,
        max: 4,
        highlight: false,
        multiple: true,
        multipleSeparator: " ",
        scroll: true,
        scrollHeight: 300
         });
       }

正在使用 Dajango 处理 GET 请求。

加思

最佳答案

formatItem 格式化项目以显示在下拉列表中,而 formatResult 格式化项目以在选择后显示在输入框中。

默认情况下,自动完成期望从指定的 url 中获取数据,格式如下:

foo|bar|baz|bing
zaz|ding|blop|grok

其中每一行是一行数据;每行都是它传递给 formatItemformatResult 的数据。您可能希望采用阻力最小的路径并以喜欢的方式返回数据。

如果您想使用不符合自动完成假设的数据,您将需要使用(据我所知未记录)解析选项来识别一个函数来解析您的 ajax 请求的结果。在我看来,您的 django View 正在返回一个数组而不是返回一个格式化的字符串。将数组格式化为 jquery 所希望的格式:

return HttpResponse('|'.join(your_array), mimetype='text/plain')

这是一个使用非标准自动完成数据 (JSON) 进行自动完成的示例:

<script type="text/javascript"> 
  format_item = function (item, position, length){ 
    return item.title; 
  } 

 // Handle data from ajax request 
 prep_data = function(data){ 
   tmp = $.evalJSON(data); 
   parsed_data = []; 
   for (i=0; i < tmp.length; i++) { 
     obj = tmp[i]; 
     // Other internal autocomplete operations expect 
     // the data to be split into associative arrays of this sort 
     parsed_data[i] = { 
        data: obj , 
        value: obj.isbn13, 
        result: obj.title 
     }; 
   } 
   return parsed_data 
 } 

 $(document).ready(function(){ 
   $("#fop").autocomplete({ 
          url : "{% url book-search %}", 
          // undocumented 
          parse: prep_data, 
          formatItem: format_item, 
          }); 
 }) 

</script>

关于javascript - formatResult 和 formatItem 选项在 JQuery 自动完成中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/737453/

相关文章:

javascript - Chai 希望 .to.throw(Error) 无法按预期工作

javascript - 如何处理同一个表单中多个Jquery + Ajax依赖的选择框

javascript - 为 nouislider 设置新值已达到最大数量

Django 过滤器 : Displaying a list of choices for filtering a TextField

javascript - 为什么 typescript 不使用 'self' 技巧?

javascript - "Intercepting"用户在文本框中输入并删除

javascript - 使用 jQuery 无法动态添加多个元素

python - Django Docker 应用程序容器运行后无法在浏览器上打开

python - Django 1.6 和 Celery 3.0 内存泄漏

javascript - JQuery 4按钮菜单,点击隐藏div并显示其他div,反之亦然