当前位置: 首页 > news >正文

solr自动提示 - jquery ui autocomplete

需求: 搜索框中 输入部分关键词之后,有下拉联想提示.选中提示,使用鼠标或者使用enter键,则触发搜索功能.没有选择搜索提示,使用部分输入关键词作为搜索,直接使用enter键也能触发搜索功能.整个过程的实现,采用了jquery的跨域调用方式.

 val = $("#retrival").val(); retrival(val == '' ? "*:*" : val); }); //绑定回车 搜索 $("#retrival").keydown(function(event) { if (event.keyCode == 13) { $(".ui-helper-hidden-accessible").empty(); var val = $("#retrival").val(); retrival(val); } }); $("#retrival") .autocomplete( { source : function(request, response) { var suggestUrl = baseURL + "/suggest?" + "q=" + request.term + "&wt=json"; suggestUrl = encodeURI(suggestUrl); $ .getJSON( suggestUrl + "&json.wrf=?", function(data) { //结果数据 data 为json对象 if (data.spellcheck.suggestions.length > 1) { response(data.spellcheck.suggestions[1].suggestion); } }); }, minLength : 1, select : function(event, ui) { //alert('select'); console.info(event); $(".ui-helper-hidden-accessible").empty(); if (event.which != 13) {// 防止与 $("#city").keydown冲突 retrival(ui.item ? ui.item.label : this.value); } } }); }); </script> </head> <body> <div class="ui-widget"> <label>检索: </label> <input id="retrival" /> <input id="commit" type="button" value="提交" /> </div> <div id="result"></div> </body> </html>
<!doctype html>
<html>
<head>
<meta name="content-type" content="text/html; charset=gbk" />
<title>solr autoComplete </title>
<link rel="stylesheet" href="lib/jquery-ui.css">
<script src="lib/jquery-1.11.2.js"></script>
<script src="lib/jquery-ui.js"></script>
<script type="text/javascript" src="lib/json3/json3.min.js"></script>
<style>
#city {
    width: 25em;
}
</style>
<script>
  var  baseURL = "http://172.21.0.31:13131/solr/jlyd";
  var search = 
  $(function() {
    // 检索函数
    function retrival(keyword ) {
        //
        $("#result").empty();
    // 如果后台没有设置json返回格式的话,这里一定要设置json返回的格式.
var selectURL = encodeURI(baseURL+"/select?"+"q="+(keyword==''? "*:*" : keyword)+"&wt=json"); $.getJSON(selectURL + "&json.wrf=?", function(data) { // 对查询结果处理 var da = data.response.docs; if(da.length>0){ for(var i=0;i<da.length;i++){ $("#result").append("<li>"+"("+(i+1)+") "+da[i].doctitle+"</li>"); } }else{ $("#result").html("没有结果"); } }); } //搜索按钮触发 $("#commit").click(function(){ $(".ui-helper-hidden-accessible").empty(); var val = $("#retrival").val(); retrival(val==''? "*:*" : val); }); //绑定回车 搜索 $("#retrival").keydown(function(event){ if(event.keyCode == 13){ $(".ui-helper-hidden-accessible").empty(); var val = $("#retrival").val(); retrival(val); } }); $( "#retrival" ).autocomplete({ source: function( request, response ) { var suggestUrl = baseURL+"/suggest?"+"q="+request.term+"&wt=json"; suggestUrl = encodeURI(suggestUrl); $.getJSON(suggestUrl + "&json.wrf=?", function(data) { //结果数据 data 为json对象 if(data.spellcheck.suggestions.length>1){ response(data.spellcheck.suggestions[1].suggestion); } }); }, minLength: 1, select: function( event, ui ) { //alert('select'); console.info(event); $(".ui-helper-hidden-accessible").empty(); if(event.which != 13){// 防止与 $("#city").keydown冲突 retrival( ui.item ? ui.item.label : this.value); } } }); }); </script> </head> <body> <div class="ui-widget"> <label>检索: </label> <input id="retrival" /> <input id="commit" type="button" value="提交" /> </div> <div id="result"></div> </body> </html>

 

效果:

  

 

转载于:https://www.cnblogs.com/a198720/p/4453624.html

相关文章:

  • SQL SERVER中查找某个字段位于哪些表
  • cdoj 847 方老师与栈 火车进出战问题
  • OpenGL绘制简单的时钟(首发测试)
  • VMware workstation 6.5安装Red Hat Linux 9
  • great C++ socket library
  • Android手机分辨率基础知识(DPI,DIP计算)
  • WebApi2官网学习记录---单元测试
  • redhat9 内核由2.4.20-8至2.6.10全过程
  • stdarg.h详解
  • C# 6.0 的那些事
  • C#脚本实践(一)
  • 【Python】excel
  • ASP.NET配置KindEditor文本编辑器 【转载】
  • 在Python中使用ArcObjects对象
  • C#脚本实践(二): Unity脚本机制分析
  • 【面试系列】之二:关于js原型
  • es6(二):字符串的扩展
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Java 网络编程(2):UDP 的使用
  • JavaScript创建对象的四种方式
  • JSDuck 与 AngularJS 融合技巧
  • NSTimer学习笔记
  • PHP那些事儿
  • Promise面试题2实现异步串行执行
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • select2 取值 遍历 设置默认值
  • Vue2.x学习三:事件处理生命周期钩子
  • Vultr 教程目录
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 从tcpdump抓包看TCP/IP协议
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 关于 Cirru Editor 存储格式
  • 前端工程化(Gulp、Webpack)-webpack
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一个完整Java Web项目背后的密码
  • 从如何停掉 Promise 链说起
  • # 数论-逆元
  • #{}和${}的区别是什么 -- java面试
  • #Z2294. 打印树的直径
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • %check_box% in rails :coditions={:has_many , :through}
  • ( 10 )MySQL中的外键
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (小白学Java)Java简介和基本配置
  • (转)Google的Objective-C编码规范
  • .Net 4.0并行库实用性演练
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .netcore如何运行环境安装到Linux服务器
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • :中兴通讯为何成功
  • @synthesize和@dynamic分别有什么作用?