js实现类似于百度学术的高级检索功能

百度学术http://xueshu.baidu.com/高级检索是通过前台生成后台内部高级语法来实现高级检索的,可以通过前台js做字符串拼接传给后台实现,难度不大:

下面是高级检索的核心功能代码,我使用的是纯js实现,并未使用jquery:

1 <p class="fl srh-btn">
2             <input type="submit" class="srh-submit" style="height:43px" value="高级搜索" id="highSearchObj"/>
3         </p>

//省略部分调用关系

 1     this.highSearch = function () {
 2         document.getElementById(‘highSearchObj‘).disabled=true;
 3         var highSearchHtml = ‘<div class="highSearch" style="display:block"><div class="highMsg"><ul>  4                         <li><span id="tabReg" class="tab">包含关键词</span><input id="kywds" value=""></li>  5                         <li><span id="tabReg" class="tab">不包含关键词</span><input id="nokywds" value=""></li> 6                         <li><span id="tabReg" class="tab">检索范围</span> 7                         <select id="st"> 8                         <option value ="byrw">本院认为</option> 9                         <option value ="sljg">审理经过</option>10                         <option value="ygsc">原告诉称</option>11                         <option value="bgbc">被告辩称</option>12                         </select></li>13                         </ul>14             <input id="conditionObj" type="submit" value="新增一组条件"></input>15                         <hr>16             <div class="fit">17             <select id="type">18               <option value ="all">全部</option>19               <option value ="pj">判决</option>20               <option value ="cd">裁定</option>21               <option value="tz">通知</option>22               <option value="jd">决定</option>23               <option value="tj">调解</option>24             </select><select id="round">25               <option value ="all">全部</option>26               <option value ="one">一审</option>27               <option value ="two">二审</option>28               <option value="again">再审</option>29             </select>30 <input id="bg" value="2010">-<input id="end" value="2016">31 <ul><li><span id="tabReg" class="tab">案由</span><input id="ay" value=""></input></li>32     <li><span id="tabReg" class="tab">法院</span><input id="fy" value=""></input></li>33 </ul></div>34             <ul id="sql"></ul>35             <input id="submitHighSearchObj" type="submit" value="提交高级搜索"></input>36             </div></div>‘;
37         this.highSearchObj = $(highSearchHtml);
38         $("body").append(this.highSearchObj);
39         $("#conditionObj").click(function(){
40             var kywds="\""+document.getElementById("kywds").value.split(" ").join("\"&\"")+"\"";
41             var st=document.getElementById("st").value;
42             var nokywds="\""+document.getElementById("nokywds").value.split(" ").join("\"|\"")+"\"";
43             var sql="<li name=\"highTag\">@("+st+")("+kywds+"-"+nokywds+")</li>";
44             $("#sql").append(sql);
45         })
46         $("#submitHighSearchObj").click(function(){
47             var highTags=document.getElementsByName("highTag");
48             var tags="";
49             var filters="";
50             var round=document.getElementById("round").value;
51             var type=document.getElementById("type").value;
52             var reason=document.getElementById("ay").value.split(" ").join(",");
53             var court=document.getElementById("fy").value.split(" ").join(",");
54             var begin=document.getElementById("bg").value;
55             var end=document.getElementById("end").value;
56             if(highTags.length==0){
57                 var kywds="\""+document.getElementById("kywds").value.split(" ").join("\"&\"")+"\"";
58                 var st=document.getElementById("st").value;
59                 var nokywds="\""+document.getElementById("nokywds").value.split(" ").join("\"|\"")+"\"";
60                 tags="@("+st+")("+kywds+"-"+nokywds+")";
61             } else {
62                 for(i=0;i<highTags.length;i++){
63                     tags+=highTags[i].innerHTML;
64                 }
65             }
66             if(round !="all") {
67                 filters+=" round:"+round+";";
68             }
69             if(type !="all") {
70                 filters+=" type:"+type+";";
71             }
72             if(reason !="") {
73                 filters+=" reason:"+reason+";";
74             }
75             if(court !="") {
76                 filters+=" court:"+court+";";
77             }
78             if(begin !="" && end !="") {
79                 filters+=" year:";
80                 while(begin<=end) {
81                     filters=filters+begin+",";
82                     begin++;
83                 }
84             }
85             if(filters !="") {
86                 tags="magic:"+tags+";filter:"+filters;
87             }
88             var formObj = $(‘<form id="form" action="/search" target="_self" method="get"></form>‘);
89             var html = [‘<input type="hidden" name="type" value="1">‘];
90             html.push(‘<input type="hidden" name="keyword" value="‘ + encodeURIComponent(tags) + ‘">‘);
91             html.push(‘<input type="hidden" name="TypeKey" value="‘ + encodeURIComponent(tags) +‘">‘);
92             formObj.html(html.join(","));
93             $("body").append(formObj);
94             formObj.submit();
95         });
96 //        $("#ay").keyup(function(e){
97 //        });
98     }

第3行到第36行主要是弹窗的HTML代码。

37,38行使用了js中常用的最简单的在页面中动态修改前台的方法。

第39行和第46行均为对新增代码的动作处理,用于提交条件和子条件。

在第46行的函数里面,做了对字符串的拼接处理。

在第88行到第96行,实现了通过隐藏表单提交查询条件的js+html调用。

这样的处理方法,在富文本编辑脚本中也可以使用。

时间: 2024-10-05 21:46:18

js实现类似于百度学术的高级检索功能的相关文章

百度地图 Android SDK - 检索功能使用的简单示例

百度地图 SDK 不仅为广大开发者提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发者提供了多种 LBS 检索的能力.通过这些接口,开发者可以轻松的访问百度的 LBS 数据,丰富自己的移动端地图应用. 目前百度地图 SDK 为开发者提供的检索服务有: POI 检索:可以检索百度 POI 数据信息: 线路规划:利用百度的引擎帮助开发者规划线路: 在线建议检索.短链接分享.地理编码等等.... 本文将以一个很简单的 POI 城市内检索为例,像广大开发者介绍接口的使用. 第一步,选择并下载 SD

百度学术

http://xueshu.baidu.com/?tn=SE_baiduxueshu_c1gjeupa 2014年6月初,“百度学术搜索”上线.百度学术搜索是百度旗下的提供海量中英文文献检索的学术资源搜索平台,涵盖了各类学术期刊.会议论文,旨在为国内外学者提供最好的科研体验.百度学术搜索可检索到收费和免费的学术论文,并通过时间筛选.标题.关键字.摘要.作者.出版物.文献类型.被引用次数等细化指标提高检索的精准性.百度学术搜索频道还是一个无广告的频道,页面简洁大方保持了百度搜索一贯的简单风格 注意

实现类似于百度搜索的功能

本文主要实现一个类似于百度搜索一样,每输入一个字符,便向后台发送一次请求,并将返回的内容在输入框下面显示出来. 实现分为HTML,JS两部分(只实现前端):   HTML: <div class='input-group'> <input type='text'  id='searchInputId'/> </div> <div id='filterDiv' class='inputFilter'></div> JS: 1.点击输入框.输入字符.

制作一个类似于百度搜索的事件代码

下面这页代码是我制作的一个简单的类似于百度主页搜索的事件. 主要事件是在文本框上输入关键字,下面会有一个div显示出来你模糊关键字的数据. 并且点击下面的数据,数据会直接跳到文本框中. 还有鼠标放上变色的一个小事件. 有兴趣的可以看一下. <script src="jquery-1.11.2.min.js"> </script> <style type="text/css"> *{ margin:0px; auto; paddin

3.7 高级检索方式(一)

3.2 节我们已经运行了一个Lucene检索的小demo(3.2 Lucene实战:一个简单的小程序),能够进行基本的Lucene检索.然后,在实际应用中,用户的需求是多种多样的.比如: 用户可能对中日关系比较感兴趣,想查找'中'和'日'挨得比较近(5个字的距离内)的文章,超过这个距离的不予考虑.比如:"中日双方能否和解?""中美日三方"等是你想要的结果,而"中国某高层领导说日本欠扁"不是你想要的结果.这时该如何设计检索方式? 用户可能是一个警察

js 实现类似百度联想输入,自动补全功能

js  实现类似百度联想输入,自动补全功能 方案一: search是搜索框id="search" 1 //点击页面隐藏自动补全提示框 2 document.onclick = function (e) { 3 var e = e ? e : window.event; 4 var tar = e.srcElement || e.target; 5 if (tar.id != search) { 6 if ($("#" + auto).is(":visibl

Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式

原文:Arcgis for Javascript API下类似于百度搜索A.B.C.D marker的实现方式 多说无益,首先贴两张图让大家看看具体的效果: 图1.百度地图搜索结果 图2.Arcgis for JavaScript实现的效果 看到了效果,是不是各位有点小鸡动,是不是也宠宠欲动,有木有?但是具体是怎么实现的呢?下面我来详细的给各位说说我的实现思路吧. 第一,数据. 其实搜索的对象从类型上来说,应该是点.线.面都支持的,但是在实际的操作过程中,不论是百度还是我自己做的时候,都会将所有

JS实现仿百度输入框自动匹配功能的示例代码

JS实现仿百度输入框自动匹配功能的示例代码 作者: 字体:[增加 减小] 类型:转载 本篇文章主要是对JS实现仿百度输入框自动匹配功能的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 现在很多网站都有这种效果,在文本框输入一个字符,下边会出来相匹配的内容,这个代码就演示了这个功能是如何完成的,当然,这是个静态的,你可以将提示的内容从数据库读取出来,要用到AJAX那东东. 复制代码 代码如下: <HTML><HEAD><title>带输入匹配的文本框&l

Node.js 博客实例(十一)文章检索功能

原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第十一章,由于版本等的原因,在原教程基础上稍加改动即可实现. 现在我们来给博客增加文章检索功能,即根据关键字模糊查询文章标题,且字母不区分大小写. 首先,我们修改 header.ejs ,在 </nav> 前添加一行代码: <span><form action="/search" method="GET"><input type