GVKun编程网logo

twitter typeahead ajax结果未全部显示(推特未显示任何结果)

18

本文将分享twittertypeaheadajax结果未全部显示的详细内容,并且还将对推特未显示任何结果进行详尽解释,此外,我们还将为大家带来关于AngularJS-自动聚焦输入并显示typeahea

本文将分享twitter typeahead ajax结果未全部显示的详细内容,并且还将对推特未显示任何结果进行详尽解释,此外,我们还将为大家带来关于Angular JS-自动聚焦输入并显示typeahead下拉菜单-ui.bootstrap.typeahead、autocomplete – twitter bootstrap 3.0 typahead ajax示例、Bootstrap Typeahead Ajax结果格式-示例、Bootstrap typeahead不显示AJAX结果的相关知识,希望对你有所帮助。

本文目录一览:

twitter typeahead ajax结果未全部显示(推特未显示任何结果)

twitter typeahead ajax结果未全部显示(推特未显示任何结果)

我正在使用带有ajax调用的twitter typeahead(typeahead.js
0.11.1)插件,但是当ajax结果的数量小于限制(默认限制为5,我未指定)时,它会给出一些奇怪的行为在预先输入电话中)。这是我的设置方法:

var limit = 6;populate_typeahead = function() {    $(''.typeahead'').typeahead(''destroy'');    $(''.typeahead'').typeahead({      hint: true,      highlight: true,      minLength: 1    },    {      source: ajaxquery,    });};var ajaxquery = function(query, syncresults, process) {        return $.ajax({            url: $(this)[0].$el.closest(''span.twitter-typeahead'').find(''input:last'').data(''mahiFindByPath''),            type: ''get'',            data: {search_string: query, limit: limit},            dataType: ''json'',            success: function(json) {                return typeof json.options == ''undefined'' ? false : process(json.options);            }        });    };

导致我出现此问题的实际示例是在输入框中键入“ new to”,它返回以下json.options:

[    ''new to add to g1'',    ''new to be in grp1 then remove from grp'',    ''new to drag'',    ''new to assign'']

但是出现的唯一建议是“所有要添加到g1的新内容”,当所有4个都应显示时。如果我继续输入“ new to d”,则会出现“ new to
drag”的建议。如果我只输入“ new”,那么我将得到包括以上大部分内容在内的完整5条建议!

如果我改变了,var limit = 5;那么ajax调用最多只会返回5个结果,并且直到我收到“ d的新消息”时才显示建议列表,即“
new”不给出任何建议。这使我认为与ajax结果的数量小于或等于预输入限制有关。为了验证我的理论,我将5个无意义的项目放入了json.options数组中,因此总会有5个以上的结果,并且全部按预期工作-
只有我不想总是在列表的底部有无意义的建议。任何建议,不胜感激!

答案1

小编典典

我有一个类似的问题。它看起来像是Typeahead
0.11.1版本中的错误。在此处尝试解决方案:https
:
//github.com/twitter/typeahead.js/pull/1212
,看看是否可行。

具体的变化是这样的:https :
//github.com/per-
nilsson/typeahead.js/commit/387290b1e70be0052c6dd9be84069f55d54a7ce7

Angular JS-自动聚焦输入并显示typeahead下拉菜单-ui.bootstrap.typeahead

Angular JS-自动聚焦输入并显示typeahead下拉菜单-ui.bootstrap.typeahead

我正在使用Angular JS-ui.bootstrap.typeahead:

我想单击一个按钮并聚焦于一个输入字段,并自动显示预先输入建议下拉列表。我有一条指令,当单击按钮时,该指令会自动聚焦输入字段。如何自动显示下拉菜单,以便用户可以使用向下箭头或单击来快速选择用户?

我用可编辑的ui-bootstrap JS文件创建了一个Plunker:

http://plnkr.co/edit/Z79LY0OYlwFc3wirjxol?p=preview

这是我的完整脚本:

    <!doctype html>
    <html ng-app="plunker">
      <head>
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angular.js"></script>
        <script src="ui-bootstrap-tpls-0.10.0.js"></script>
      </head>
      <body>

    <script>
      angular.module('plunker',['ui.bootstrap'])
      .directive('focusMe',function($timeout,$parse) {
        return {
            //scope: true,// optionally create a child scope
            link: function(scope,element,attrs) {
                var model = $parse(attrs.focusMe);
                scope.$watch(model,function(value) {
                    if(value === true) { 
                        $timeout(function() {
                            element[0].focus(); 
                        });
                    }
                });

            }
        };
    });
    function TypeaheadCtrl($scope,$http) {

      $scope.selected = undefined;
      $scope.states = ['Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','Florida','Georgia','Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire','New Jersey','New Mexico','New York','North Dakota','North Carolina','Ohio','Oklahoma','Oregon','Pennsylvania','Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington','West Virginia','Wisconsin','Wyoming'];
      $scope.opened = false;

      $scope.open = function() {
        $scope.opened = true;
      }
      $scope.close = function() {
        $scope.opened = false;
      }
    }

    </script>
    <divng-controller="TypeaheadCtrl">

        <h4>How can I open the typeahead dropdown automatically when button is pressed?</h4>
        <p>I have a directive that automatically focuses on the field but I can't seem to automatically show the typeahead. Even adding down arrow key click support would be great.

        <br/><br/>

        <buttonng-show="!opened" ng-click="open()">Open Input and show typeahead!</button>
        <buttonng-show="opened" ng-click="close()">Close Input</button>
        <br/><br/>

        <input type="text"
        focus-me="opened"
        ng-show="opened"
        ng-model="selected" 
        typeahead="state for state in states | filter:$viewValue | limitTo:8">


        <br/>
        <pre ng-show="opened">Model: {{selected | json}}</pre>


    </div>
      </body>
    </html>

autocomplete – twitter bootstrap 3.0 typahead ajax示例

autocomplete – twitter bootstrap 3.0 typahead ajax示例

有很多类型的头像ajax示例在那里为bootstrap 2,例如这里这里 twitter bootstrap typeahead ajax example。

但是我使用引导3,我找不到一个完整的例子,而只是一堆不完整的信息片段与其他网站的链接,例如这里Where is the typeahead javascript module in bootstrap 3 RC 1?

有人可以在每次用户更改输入时,通过ajax从服务器加载数据,然后再发布一个关于如何使用引导程序3使用typeahead的完整工作示例。

解决方法

使用bootstrap3 -a打头像,我使用以下代码:
<input id="typeahead-input" type="text" data-provide="typeahead" />

<script type="text/javascript">
jQuery(document).ready(function() {
    $('#typeahead-input').typeahead({
        source: function (query,process) {
            return $.get('search?q=' + query,function (data) {
                return process(data.search_results);
            });
        }
    });
})
</script>

后端在搜索GET端点提供搜索服务,在q参数中接收查询,并返回格式为{‘search_results’:[‘resultA’,’resultB’,…]}的JSON。 search_resultsarray的元素显示在前导输入中。

Bootstrap Typeahead Ajax结果格式-示例

Bootstrap Typeahead Ajax结果格式-示例

我正在使用带有ajax函数的Bootstrap
typeahead,并且想知道什么是正确的Json结果格式,以返回ID和说明。我需要一个ID来将预输入的选定元素与mvc3模型绑定。

这是代码:

    [Html]    <input id="myTypeahead"ajax-typeahead'' type="text" data-link="myUrl" data-provide="typeahead" />    [Javascript]    $(''#myTypeahead'').typeahead({        source: function (query, process) {            return $.ajax({                url: $(''#myTypeahead'').data(''link''),                type: ''post'',                data: { query: query },                dataType: ''json'',                success: function (jsonResult) {                    return typeof jsonResult == ''undefined'' ? false : process(jsonResult);                }            });        }    });This works properly when I return a simple list of strings, for example:{item1, item2, item3}But I want to return a list with Id, for example:{ {Id: 1, value: item1}, {Id: 2, value: item2}, {Id: 3, value: item3}}

如何在ajax“ success:function()”中处理此结果?

使用 jquery Autocomplete 非常容易,因为我可以返回Json Object列表。

[jquery Autocomplete process data example]...            success: function (data) {                response($.map(data, function (item) {                    return { label: item.Id, value: item.Value, id: item.Id, data: item };                })...

但这不适用于boostrap Typeahead。

谁能帮我?

谢谢。

答案1

小编典典

我尝试了两天,终于可以工作了。Bootstrap Typeahead默认情况下不支持对象数组,而仅支持字符串数组。因为“ matcher”,“
sorter”,“ updater”和“ highlighter”函数期望将字符串作为参数。

而是,“ Bootstrap”支持可自定义的“ matcher”,“ sorter”,“ updater”和“
highlighter”功能。因此,我们可以在Typeahead选项中重写这些功能。

II使用Json格式,并将ID绑定到隐藏的html输入。

代码:

$(''#myTypeahead'').typeahead({    source: function (query, process) {        return $.ajax({            url: $(''#myTypeahead'').data(''link''),            type: ''post'',            data: { query: query },            dataType: ''json'',            success: function (result) {                var resultList = result.map(function (item) {                    var aItem = { id: item.Id, name: item.Name };                    return JSON.stringify(aItem);                });                return process(resultList);            }        });    },matcher: function (obj) {        var item = JSON.parse(obj);        return ~item.name.toLowerCase().indexOf(this.query.toLowerCase())    },    sorter: function (items) {                 var beginswith = [], caseSensitive = [], caseInsensitive = [], item;        while (aItem = items.shift()) {            var item = JSON.parse(aItem);            if (!item.name.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(JSON.stringify(item));            else if (~item.name.indexOf(this.query)) caseSensitive.push(JSON.stringify(item));            else caseInsensitive.push(JSON.stringify(item));        }        return beginswith.concat(caseSensitive, caseInsensitive)    },    highlighter: function (obj) {        var item = JSON.parse(obj);        var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, ''\\$&'')        return item.name.replace(new RegExp(''('' + query + '')'', ''ig''), function ($1, match) {            return ''<strong>'' + match + ''</strong>''        })    },    updater: function (obj) {        var item = JSON.parse(obj);        $(''#IdControl'').attr(''value'', item.id);        return item.name;    }});

Bootstrap typeahead不显示AJAX结果

Bootstrap typeahead不显示AJAX结果

在询问之前我想说这不是一个重复的话题.我已经尝试过了:

> Pwarelis‘前叉
> Tcrosen’s一
> Gudbergur’s代码

……还有很多其他人,我也阅读了很多Q& A,但这些都不是我想要的.
我尝试的所有内容都与预定义的字符串源一起使用,但是当我执行下一步:AJAX远程源时,它只是在下拉列表中显示没有结果.

更新 – 我的代码(不明白为什么负面投票.写得好,结构良好;))

html文件

<html>
<head>
<link href="./bootstrap/css/bootstrap.css" rel="stylesheet" type="text/css" />
</head>
<body>

<input id="myElement"type="text">

<script src="./js/jquery.js"></script>
<script src="./bootstrap/js/bootstrap-typeahead.js"></script>
<script language="javascript">
$(''#myElement'').typeahead({
ajax: ''/PHP/ajax.PHP''
});
</script>
[...]

ajax.PHP文件:

<?PHP
echo "[{ id: 1,name: ''Terry''},{ id: 2,name: ''Mark''},{ id: 3,name: ''Jack''}]";
?>

这不是AJAX问题,因为它在其他情况下在同一台机器上工作.
我可以尝试修理它吗?几天后我真的崩溃了.谢谢阅读.

解决方法

在不知道正确答案的情况下投票否定的人应该在采取行动之前先思考一下.如果有人需要一个真正的漂亮/工作/魔术自动完成脚本,那么我们去:

Real good Autocomplete Script

说明:这会向文本字段添加建议值的下拉菜单.用户可以直接单击建议以将其输入到字段中,也可以使用向上和向下箭头键导航列表,使用回车键选择值.建议列表的值以XML或JSON(通过PHP脚本或类似方式)提供.

谢谢那些消极点消失的人;)

我们今天的关于twitter typeahead ajax结果未全部显示推特未显示任何结果的分享已经告一段落,感谢您的关注,如果您想了解更多关于Angular JS-自动聚焦输入并显示typeahead下拉菜单-ui.bootstrap.typeahead、autocomplete – twitter bootstrap 3.0 typahead ajax示例、Bootstrap Typeahead Ajax结果格式-示例、Bootstrap typeahead不显示AJAX结果的相关信息,请在本站查询。

本文标签: