大佬教程收集整理的这篇文章主要介绍了jquery – 在单个页面中使用多个bootstrap Typeahead字段?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
function addTypeahead(element) { var labels,mapped; var myElement = $(element); console.log(myElement); myElement.typeahead({ source: function (query,process){ $.post('/edit/unassigned_list',{q: query},function(data){ labels = []; mapped = {}; //console.log(data); $.each(data,function(i,item){ var query_label = item.name; mapped[query_label] = item; labels.push(query_label); }); process(labels); },"JSON"); },updater: function (query_label){ var item = mapped[query_label]; myElement.attr('person_id',item.id); return query_label; } }); }
这很有效.但是,当我尝试将其设置为跨多个元素时,我最终会在第一个元素上使用它(我认为因为我不小心让它泄漏到全局范围或者我做了一些可怕的错误).我给你举个例子
我有多个标记为#project-auto- *的项目元素,我在我的文档(就绪)部分中运行以下代码:
$("[id^=project-auto-]").each(function(index,element){ var local = $(element); addTypeahead(element); });
如果我只是遍历和控制台记录他们都显示的每个元素.但是,如果我尝试将typeahead应用于其中任何一个,则只有第一个具有typeahead(并且它正常工作),但循环在第一个应用程序之后终止.我一直在挠头,玩不同的范围(因此为什么所有的范围嵌套)无济于事.我做过一些我完全错过的超级傻事吗?
$(function () { var $element = $('[id$=filter_autocomplete]'); if ($element.length > 0) { // Loop through each element that is autocomplete $.each($element,function (index,element) { // $form obj name of the closest form // formData String name of the resource making the request // paramname String name of the String field // primaryKey String name of the priMary key // id String id of the element var $form = $(element).closest('form'); var formData = $form.data('resource'); var paramname = $(element).attr('data-field'); var primaryKey = $(element).attr('data-primaryKey'); var id = $(element).attr('id'); // Sets the bhENGIne as new Bloodhound object var bhENGIne = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace(paramname),queryTokenizer: Bloodhound.tokenizers.whitespace,remote: { url: search_url + '?value=%QUERY&resource=' + formData + '&input_id=' + paramname,wildcard: "%QUERY" } }); // Set up typeahead for each element $(element).typeahead(null,{ name: paramname,display: paramname,minLength: 0,highlight: true,hint: true,source: bhENGIne.ttAdapter(),templates: { empty: [ '<div class="no-items">' + '<p class="alert alert-danger">','<strong>No Items Found</strong>','</p></div>' ].join('\n') } }).on('typeahead:SELEcted',function (obj,datum) { // Set the hidden priMary key field $("#hidden\\|" + paramname).val(datum[primaryKey]); }); }); } });
以上是大佬教程为你收集整理的jquery – 在单个页面中使用多个bootstrap Typeahead字段?全部内容,希望文章能够帮你解决jquery – 在单个页面中使用多个bootstrap Typeahead字段?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。