Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 375|回复: 0

使用bootstrap typeahead输入框自动补全之 问题与解决

[复制链接]
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 789 天

    [LV.10]以坛为家III

    2049

    主题

    2107

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    722638
    发表于 2021-5-14 04:36:54 | 显示全部楼层 |阅读模式

    根据网上查找到的 typeahead使用方法,到最后一步时就出错,数据能从数据库读取出来,但在输入框显示提示时,全都显为:underfined。捉摸了半天都发现不了问题出在哪儿。后来在http://blog.64cm.com/post/2014/08/13/%E4%BD%BF%E7%94%A8bootstrap-typeahead%E6%8F%92%E4%BB%B6 上不经意发现这么一句话:“在当前版本的typeahead中,已经不再支持在source属性中直接调用ajax方法获取数据源了。”提醒了我,因为我根据网上的方法,是直接在source中调用ajax方法。

    再回头现在的ace demo,虽然没有调用ajax的示例,但也有注释说明如何用,只不过用的是英文(题外话:做技术的懂英语真的很重要。),经过一翻调试,终于能正确显示了。贴出代码如下:

    js代码

    <script type="text/javascript">
        jQuery(function($) {
            
            //typeahead.js
            //example taken from plugin's page at: https://twitter.github.io/typeahead.js/examples/
            var substringMatcher = function() {//substringMatcher()方法
                return function findMatches(query, process) {//query 是配备的关键字,processj是返回的值
                    var matches, substringRegex;
                    var params = {"token": getStorage("token"), "flag":0,"name":query};
                        var parameter_str="";
                        for(var key in params){  
                            parameter_str+="&"+key+"="+params[key];
                        }  
                        var fullurl=getOption("gykj_host")+"institution/list?"+getOption("gykj_callbackparam")+"="+getOption("gykj_callbackfunc")+parameter_str;
                        $("#submenu_info").html(fullurl);
                        $.ajax({
                            url:fullurl,
                            type:'get',
                            dataType:"jsonp",
                            jsonp:getOption("gykj_callbackparam"),
                            jsonpCallback:getOption("gykj_callbackfunc"),
                            async:false,
                            error:function(){
                                alert("列表:"+getOption("connectionErrorMessage"));
                            },
                            success:function(data){
                            //$("#submenu_info").html(fullurl);
                                if(data.code==0){
                                    var arr,substringRegex;
                                         arr=[];
                                        substrRegex = new RegExp(query);//这必须有,要不还是显示为underfined
                                        for(var item in data.data){
                                            var str= data.data[item].name;
                                            if (substrRegex.test(str)) {
                                                // the typeahead jQuery plugin expects suggestions to a
                                                // JavaScript object, refer to typeahead docs for more info
                                                arr.push({ value:str});
                                            }
                                            
                                        }
                                        process(arr);
                                        
                                }
                            }
                        })
                        
             }
            }
             $('input.typeahead').typeahead({
                hint: true,
                highlight: true,
                minLength: 1
             }, {
                name: 'states',
                displayKey: 'value',
                source: substringMatcher()//当前版本source属性中不能直接调用ajax方法获取数据源,通过substringMatcher()方法
                
             });
        
        });
    </script> 

    html

    <!-- inline scripts related to this page -->
    <script src="../assets/js/ace-elements.js"></script>
    <script src="../assets/js/typeahead.jquery.js"></script>
    <input type="text" id="name" placeholder="机构名称" class="col-xs-10 col-sm-5 typeahead scrollable" value="" autocomplete="off" />

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-9-10 14:36 , Processed in 0.064046 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表