本文将分享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结果未全部显示(推特未显示任何结果)
- Angular JS-自动聚焦输入并显示typeahead下拉菜单-ui.bootstrap.typeahead
- autocomplete – twitter bootstrap 3.0 typahead ajax示例
- Bootstrap Typeahead Ajax结果格式-示例
- Bootstrap 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-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示例
但是我使用引导3,我找不到一个完整的例子,而只是一堆不完整的信息片段与其他网站的链接,例如这里Where is the typeahead javascript module in bootstrap 3 RC 1?
有人可以在每次用户更改输入时,通过ajax从服务器加载数据,然后再发布一个关于如何使用引导程序3使用typeahead的完整工作示例。
解决方法
<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结果格式-示例
我正在使用带有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结果
> 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结果的相关信息,请在本站查询。
本文标签: