java + typeahead 使用

基于Bootstrap的Typeahead自动补全插件 配置参数可以通过data-*属性来设置,也可以在初始化是通过js来设置。需要注意的是,使用data-*属性来设置时,需要将驼峰格式的属性转换为连字符形式,例如,data-minLength需要写成data-min-length。Bootstrap-Typeahead用于完成自动补全的数据源有两种方式:通过source属性来设置数据源,或者通过json数据来提供数据源。Bootstrap-Typeahead的使用方式有两种:通过数据属性字段的方式和通过Javascript加载的方式。 阅读详情

项目需要在页面上使用提示补全功能,使用了typeahead 插件,由于目前该类型插件有很多,而且名字也都类似,甚至一样,所以很不好从网上找到使用方法,所以记录一下该插件的使用方式,防止以后需要忘记了。


插件下载地址:http://twitter.github.io/typeahead.js/

插件演示地址:http://twitter.github.io/typeahead.js/examples/

插件文档说明(英文):https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#datasets

自己下载的插件(包含样式)百度盘下载地址:链接: http://pan.baidu.com/s/1boEx0JH 密码: 63a9

该插件提供了2种js文件来使用,一种是typeahead.bundle.js,集成了bundle功能,另一种是typeahead.jquery.js,没有集成bundle功能,需要单独引用相关js.

但是jquery的可以设置一些其他的额外参数,比如设置提示的数量等。我是用的是typeahead.jquery.js。

使用方式:

需要引入的js:

<script src="${ctx}/static/lib/jquery/1.11.3/jquery.min.js"></script>
<script src="${ctx}/static/lib/typeahead/handlebars.js"></script>
<script src="${ctx}/static/lib/typeahead/bloodhound.js"></script>
<script src="${ctx}/static/lib/typeahead/typeahead.jquery.js"></script>
这3个js是必须要引入的,如果需要对显示的内容进行修改,还需要引入一个js:

<script src="${ctx}/static/lib/typeahead/handlebars.js"></script>

页面使用方式:

<input data-provide="typeahead" class="form-control" type="text" placeholder="请输入出发城市..." id="fromairport" name="fromairport" />
由于我使用了bootstrap, 所以input 的样式是使用的bootstrap提供的。typeahead 只需要你提供一个input即可。

js:

 //远程数据源
var remote_airports = new Bloodhound({
	datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
	queryTokenizer: Bloodhound.tokenizers.whitespace,
	// 在文本框输入字符时才发起请求
	remote: {
		url:"${ctx}/airport/typeahead?query=%QUERY",
		wildcard: '%QUERY'
	}
});
		
		
$('#fromairport').typeahead({
	highlight: true
}, {
	name: 'airport',
	limit: 100//limit 这里有bug,如果传过来的数据少于limit个,会显示limint-传过来的数量,所以我在这里设置成100,最多传过来20个,这样就会显示20个
	source: remote_airports,
	display:'value',
	templates: {
		empty: [
			'<div class="empty-message">',
			 '未匹配到相关机场',
			 '</div>'
			 ].join('\n'),
		suggestion: Handlebars.compile('<div><strong>{{value}}</strong> – {{name}}</div>')
	}
});
		

如果input中需要显示的不止一个value,则需要这样写:

display:function(date){
 	return date.value+" - "+date.name;
},

我使用的是在服务器中去匹配补全数据,所以使用了远程数据源,本地的比较简单直接看官方例子即可。

这里我显示的补全信息做了处理,即在templates中修改的。

java后台生成数据:

package com.shijie99.chartered.manage.controller;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.shijie99.chartered.manage.config.ConfigTool;
import com.shijie99.chartered.manage.pojo.AirPortInfo;

@RestController
@RequestMapping("airport")
public class AirPortController {
    
    @Autowired
    private ConfigTool configTool; 
    
    /**
     * 机场自动提示
     * @param query
     * @return   
     * @author wangcf
     * @date 2016-3-29 下午5:11:21
     */
    @RequestMapping("typeahead")
    public Object typeahead(String query){
        Map<String,AirPortInfo> map = configTool.getAirportMap();
        List<City> list = new ArrayList<City>();
        Iterator<String> it = map.keySet().iterator();
        while(it.hasNext()){
            if(list.size()>=20){
                break;
            }
            String key = it.next();
            if(key.indexOf(query.toUpperCase())==0){
                City city = new City();
                city.setValue(key);
                city.setName(map.get(key).getAirportName());
                list.add(city);
            }
        }
        return list;
    }
    
   public class City{
        private String value;
        private String name;

        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

public class AirPortInfo {
	private String airportCode;
	private String cityCode;
	private String airportName;
	private String cityName;
	public String getAirportCode() {
		return airportCode;
	}
	public void setAirportCode(String airportCode) {
		this.airportCode = airportCode;
	}
	public String getCityCode() {
		return cityCode;
	}
	public void setCityCode(String cityCode) {
		this.cityCode = cityCode;
	}
	public String getAirportName() {
		return airportName;
	}
	public void setAirportName(String airportName) {
		this.airportName = airportName;
	}
	public String getCityName() {
		return cityName;
	}
	public void setCityName(String cityName) {
		this.cityName = cityName;
	}
	@Override
	public String toString() {
		return "AirPortInfo [airportCode=" + airportCode + ", cityCode="
				+ cityCode + ", airportName=" + airportName + ", cityName="
				+ cityName + "]";
	}
}

java后台使用的是spring 的mvc,所以返回的数据是一个json数组,格式是这样子的:

[{"value":"ALL1","name":"阿尔班加机场"},{"value":"AQG","name":"安庆天柱山机场"},{"value":"AQJ","name":"侯赛因国王国际机场"
},{"value":"AQI","name":"柴苏马机场"},{"value":"APO","name":"阿帕尔塔多机场"},{"value":"APU","name":"阿普卡拉机场"},{"value"
:"APZ","name":"萨帕拉机场"},{"value":"APW","name":"阿皮亚机场"},{"value":"ARB","name":"安阿伯地方机场"},{"value":"ARC"
,"name":"北极村机场"},{"value":"ARD","name":"阿洛岛机场"},{"value":"ARE","name":"阿雷西沃机场"},{"value":"ARG","name"
:"沃尔纳特里奇机场"},{"value":"ARH","name":"阿尔汉格斯克机场"},{"value":"ARI","name":"查卡鲁塔机场"},{"value":"ARK","name"
:"阿鲁沙机场"},{"value":"ARM","name":"阿米代尔机场"},{"value":"ARN","name":"阿兰达机场"},{"value":"ARP","name":"阿拉吉普
机场"},{"value":"AQP","name":"罗德伊圭兹 挽巴隆机场"}]

显示的结果:




bootstrap-typeahead结合ajax动态提示 版权声明:本文为博主原创文章,未经博主允许不得转载 小旭今天想尝试下bootstrap-typeahead来做一个动态的输入框提示,于是乎踏上了几小时的研究之路。 在这里给大家分享下做法与经验吧。 首先,先奉上官网http://www.bootcdn.cn/bootstrap-3-typeahead/; 效果图: 这里我用bootstrap做前端,用struts2接后台j 阅读详情

相关推荐

jquery-typeahead:Javascript Typeahead(自动完成)插件,带有50多个选项和回调

jQuery提前输入 jQuery Typeahead插件可在搜索输入上提供自动完成预览功能,类似于带有内置选项和深度自定义功能的google搜索。 它是一个简单的客户端库,可以改善您的网站搜索输入上的用户体验! jQuery Typeahead插件是根据MIT许可证发布的。 完整的文档,演示和更多说明可在上找到。 安装 npm install jquery-typeahead 或者 yarn add jquery-typeahead 文献资料 您可以在上找到完整的文档。 演示版 版本说明 拉取请求 在创建新的请求请求之前,请考虑以下几点 应该从develop to develop分支发出pull请求,以便可以对其进行正确测试,并且不能直接在master上下载。 master分支应该是最新发布的tag的副本,没有任何尚未发布的其他新代码 在PR和示例中添加描述性注释 仅提交更改的行,而

typeahead

1.查询qps,索引容量 2.离线数据流如何建设 2.1LogData数据量太大,可以降频 2.2DataCollection提取LogData计算高频词汇,例如今天天气,10M 2.3数据如何分片, 2.3.1采用consistency hash 2.3.2range方式,需要有服务采取一些策略调度数据,避免某些服务负载 2.4数据如何推送到线上: 2.4.1可以离线pipeline方式,推送到线上,每台机器内存double buffer trie,单个sh...

INGNIGHT的专栏 1641

typeahead.js:typeahead.js是一个快速且功能齐全的自动完成库

这是的自动完成搜索库的维护分支。 typeahead.js库由2个组件组成:建议引擎和UI视图 。 建议引擎负责为给定查询计算建议。 UI视图负责呈现建议和处理DOM交互。 这两个组件可以单独使用,但是当一起使用时,它们可以提供丰富的预输入体验。 入门 如何获取typeahead.js取决于您: 用安装: $ bower install corejs-typeahead 使用安装: $ npm install corejs-typeahead 使用安装: $ composer require corejavascript/typeahead.js 单独下载最新的dist文件: (独立建议引擎) (独立UI视图) ( bloodhound.js + typeahead.jquery.js ) 注:这两个bloodhound.js和typeahead.jquery.js

bootstrap实践录:输入框自动补全-typeahead篇

因工作需要,在网页的输入框实现自动补全功能。本文继续研究,使用 typeahead 实现该功能。

李迟的专栏 2201

angular-typeahead:灵活的 AngularJS Typeahead 指令,无需外部依赖

==================== Angular-mw-typeahead 灵活的 AngularJS Typeahead 指令,无需外部依赖。 例子 简单清单: var User = $resource ( "/api/users" ) ; $scope . users = [ ] ; $scope . queryUsers = function ( prefix ) { return User . query ( { prefix : prefix , limit : 5 } ) . $promise ; } ; < mw-typeahead ng-model =" selectedItem " ng-change =" users.push(selectedItem); selectedItem = null "

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

weixin_44240228的博客 1万+

2022bootstrap3-typeahead自动补全教程

本篇是自动补全插件的教程,可以让新手快速上手

weixin_45773002的博客 329

如何在NVIDIA CX6 网卡和华为CE交换机上为RDMA协议使能DCQCN和PFC

【代码】如何在NVIDIA CX6 网卡和华为CE交换机上使能DCQCN和PFC。

Markchen7788的博客 5094

typeahead有什么作用_typeahead使用配置参数。

示例代码:var suggestion_source = new Bloodhound({datumTokenizer: Bloodhound.tokenizers.obj.whitespace("display_name"),queryTokenizer: Bloodhound.tokenizers.whitespace,remote: {url: "http://nominatim.opens...

weixin_28851659的博客 754

【SOC估算】基于EKF与神经网络融合的锂电池SOC高精度估计及Matlab实现

本文探讨了基于EKF与神经网络融合的锂电池SOC高精度估计方法。通过结合扩展卡尔曼滤波(EKF)的模型驱动优势和神经网络的数据驱动学习能力,实现了对电池荷电状态(SOC)的精准预测。Matlab仿真验证了该混合算法在各种工况下均能显著降低估计误差,提升电池管理系统性能。

play7的博客 696

Lossless-Claw 插件实战:告别上下文截断,让 OpenClaw 永不遗忘

本文介绍了OpenClaw的Lossless-Claw插件,这是一个基于LCM论文的DAG摘要系统,能有效解决上下文截断问题。文章包含10个部分,从插件原理到实操指南: 核心原理:通过DAG结构持久化存储所有原始消息,将旧消息分块摘要并形成层级结构,保持上下文在模型Token限制内。 性能优势:在OOLONG基准测试中得分74.8,优于Claude Code的70.3,尤其在长上下文场景表现更佳。 功能特点: 提供lcm_grep、lcm_describe等工具主动回忆历史 摘要始终链接回原文,实现真正无损

u014798858的博客 2619

自动补全Typeahead

采用 Typeahead(Bootstrap-3-Typeahead-master) <script type="text/javascript" src="/js/plugins/bootstrap3-typeahead.min.js"></script> <script type="text/javascrip...

weixin_30845171的博客 151

使用 ANSYS AEDT(双向耦合)对高功率射频同轴滤波器进行热分析

使用 ANSYS HFSS,可以精确计算 EM 损耗,然后将其导入 ANSYS 热分析并使用 ANSYS Icepak CFD 求解器进行仿真,以帮助工程师解决最复杂的热挑战,并预测其设计在温度变化下的表现。然后,RF 损耗将与 ANSYS Icepak CFD 求解器耦合,以执行热分析,包括传热的传导、对流和辐射模式,并计算温度曲线。在此演示中,我们将仿真下面的 RF 同轴滤波器,并计算由于所用材料的有限电导率和介电损耗而导致的 RF 传导损耗。设置 HFSS 设计后,我们可以开始 HFSS 仿真。

jkh920184196的博客 1051

bootstrap实现的类似百度搜索的输入框自动完成功能(动态获取数据库的值)

<div class="search"> <input type="text" data-provide="typeahead" id="product_search" class="flight"/> ...

chuleigang4140的博客 2152

C语言版数字锁相放大器实现指南:从复数运算到嵌入式MCU移植的坑我都帮你踩了

本文详细介绍了C语言实现数字锁相放大器的关键技术,包括复数运算优化、嵌入式MCU移植的实战经验及内存管理策略。针对STM32等资源受限平台,提供了从浮点到定点数转换的优化方案,帮助工程师高效处理微弱信号提取问题。

weixin_30721077的博客 433

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积,

weixin_44184852的博客 1877

typeahead搜索提示

一:引入样式文件与js            JavaScript" src="~/Content/js/bootstrap-typeahead.js"> 二:建立一个文本框   注意样式冲突一般该input父级对a的样式可能会影响到他 三:绑定typeahead [javascript] 

wumingwuxin的博客 571

全志F1C100S/F1C200S学习笔记(1)——基础简介及资料

资料: 荔枝派资料下载站 荔枝派github 荔枝派中文论坛 荔枝派DIY-github资料 荔枝派Nano 全流程指南 芒果派 坑网

丨晋丨 1万+

bootstrap-typeahead 自动补全简单的使用教程

bootstrap-typeahead 自动补全简单的使用教程 参考链接: 参考1 : https://segmentfault.com/a/1190000006036166参考2 : https://blog.csdn.net/u010174173/article/details/53227583参考3 : https://www.cnblog...

HiterCoder 1007

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

在 angularjs 中集成 bootstrap typeahead

问题 在使用 typeahead 的时候,有这样一个需求,当用户选中其中一项的之后,将项目对应的 id 保存到另外一个变量中,以后在提交表单的时候,将这个 id 发送到服务器中。 但是,在 typeahead 中对于元素的操作,angularjs 没有感知到,导致不能获取最新的数据。 typeahead 中选择数据之后的事件 itemSelected 在 typeahead 中,我们可以定...

weixin_34273479的博客 190

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

如何在Java Web中做自动补齐的功能?Bootstrap-3-Typeahead-master插件用法介绍

首先要做自动补齐需要一个插件 Bootstrap-3-Typeahead-master 需要的:可以点击下面的百度云链接下载: 链接: https://pan.baidu.com/s/1Huk-8cIuW3G3itJCSr3PSQ 提取码: 82wd 首先是为什么需要这个插件呢?因为有了这个插件我们就能更方便的做自动补齐, 好了废话不多说,直接进入正题 首先让我们先看看自动补齐的效果 可以看...

fenghuoliuxing990124的博客 551

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Bootstrap-3-Typeahead 异步查询数据,自动补全

Bootstrap-3-Typeahead 异步查询数据,自动补全 引入bootstrap3-typeahead.min.js input 框添加autocomplete=“off” data-provide=“typeahead” <input id="tId" name="tName" autocomplete="off" data-provide="typeahead" type="text" /> 为input 框绑定事件 $(function() { $("#t

yypraaa的博客 571

【前端】typeahead + tagsinput 实现标签自动补全

项目需求: 添加技能标签,已维护的标签自动补全 技术选型: 标签管理tagsinput 官方demo 自动补全typeahead 官方demo 加载相关js和css文件 <!--引入js和bootstrap--> <script th:src="@{/js/jquery.min.js}"></script> <link th:hr...

许苗峰的专栏 1039
上一篇: 导出excel
下一篇: java 度取上传 excel 文件信息,全部转换为字符串
wcfeng_9527
博客等级 码龄11年 3粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值