jQuery实现高级检索功能


Posted in jQuery onMay 28, 2019

初学JQuery,写了一个高级检索的动态输入框,如图所示: 

jQuery实现高级检索功能

实现的功能:

* 当选择属性下拉框中不同类型(字符串、数字、日期)的属性时,后面弹出不同数量的和不同格式的文本框(字符串弹出一个输入文本框,数字型的弹出两个输入文本框,日期型的弹出两个日期选择控件);

* 单击“添加条件”链接后,下面会增加一行条件输入,可以选择逻辑(与、或、非)、属性。

html部分代码如下:

< div id= "0" class ="row" > 

  < dd >

   <select id = "condition" class= "span2" style = 'width:110px;' >         

    <option value= 'and' >与 </option >
    <option value = 'or'> 或</ option>
    <option value= 'not' >非 </option >        

   </select >

  </dd >      

  < dd >< select id= "attrlist" class= "span2" style = 'width:110px;' >
   <s:iterator value= "equipAttrs" id ="attrs" >          
    <option value= '< s:property value= "#attrs[2]" />' ><s:property value= "#attrs[1]" /></option >

   </s:iterator >         

  </select ></dd >

  < dd> <input id = "rangestart" type= "text" class = "span2 search-query"></ dd>       
  < dd> <div id = "rangeend"> --< input type= "text" class = "span2 search-query" ></div ></dd >
  < dd> <div id = "timerange">< input type= "text" id = "datetimepicker1">        --
  <input type = "text" id= "datetimepicker2" >
  </div ></dd >
  <div id = "clickgroup">

   < dd> <button id = "searchButton" type= "submit" class = "btn"> 搜索</ button></ dd>  
   < dd> <a id = "multiSelect" href= "#"> 添加条件 </a ></dd >

  </div >      
</div >  
< div id= "lastrow" ></div >

JQuery代码:

< script type= "text/javascript" src= "js/jquery-1.7.2.min.js" ></ script >
< script type= "text/javascript" >
//用于动态修改新生成的节点id,便于定位子节点,为其添加事件
var conditionCount=1;

$(document).ready( function(){
  $( "#rangeend").hide();
  $( "#timerange").hide();
  $( "#condition").hide();
  //为初始节点添加事件
  selectClick( "0");
  //日期选择控件参数设置
  $( '#[id*=datetimepicker]').datetimepicker({
   format: 'yyyy-mm-dd',
   todayBtn: true,
   startView:4,
   minView:2,
   maxView:4,
   startView:4,
   todayHighlight: true,
   initialDate: new Date(),
   autoclose: true,  
  }); 
  //为“添加条件”添加事件
  $( "#multiSelect").click( function(event){
   var $nextrow=$( "#0").clone(); //克隆初始节点
   $nextrow.attr( "id",conditionCount); //修改复制的节点id,用于定位子节点
   $( "#lastrow").before($nextrow);
   $( "#"+conditionCount+ " select[id='condition']").show();
   $( "#"+conditionCount+ " input[id='rangestart']").show();
   $( "#"+conditionCount+ " div[id='rangeend']" ).hide();
   $( "#"+conditionCount+ " div[id='timerange']" ).hide();
   $( "#"+conditionCount+ " div[id='clickgroup']" ).hide();
   var $t1=$( "#"+conditionCount+ " div[id='timerange']").children();
   var at=$t1.attr( "id");
   $t1.attr( "id",at+ ""+conditionCount);
   $t1=$t1.next();
   var at1=$t1.attr( "id");
   $t1.attr( "id",at1+ ""+conditionCount);
   //为新插入的节点添加事件 
   selectClick(conditionCount);
   conditionCount++;

   $( '#[id*=datetimepicker]').datetimepicker({
    format: 'yyyy-mm-dd',
    todayBtn: true,
    startView:4,
    minView:2,
    maxView:4,
    startView:4,
    todayHighlight: true,
    initialDate: new Date(),
    autoclose: true,  
   }); 

  });
});


  function selectClick(flag){
   /* 三个对象如果放在这里定义的话会出错,每个选择事件都会控制最下面一行的文本框的显示,如果在下面三个事件中分别添加这三行,则事件触发正常   
   $start=$("div[id="+flag+"]>dd>input[id='rangestart']");
   $end=$("div[id="+flag+"]>dd>div[id='rangeend']");
   $time=$("div[id="+flag+"]>dd>div[id='timerange']"); */
   $( "#"+flag+ ">dd>select[id='attrlist']>option[value*='Date']" ).click( function(){
    $start=$( "div[id="+flag+ "]>dd>input[id='rangestart']" );
    $end=$( "div[id="+flag+ "]>dd>div[id='rangeend']" );
    $time=$( "div[id="+flag+ "]>dd>div[id='timerange']" );
    $start.hide();
    $end.hide();
    $time.show();
   });
   $( "#"+flag+ ">dd>select[id='attrlist']>option[value*='String']" ).click( function(){
    $start=$( "div[id="+flag+ "]>dd>input[id='rangestart']" );
    $end=$( "div[id="+flag+ "]>dd>div[id='rangeend']" );
    $time=$( "div[id="+flag+ "]>dd>div[id='timerange']" );
    $start.show();
    $end.hide();
    $time.hide();
   });
   $( "#"+flag+ ">dd>select[id='attrlist']>option[value*='Float']" ).click( function(){
    $start=$( "div[id="+flag+ "]>dd>input[id='rangestart']" );
    $end=$( "div[id="+flag+ "]>dd>div[id='rangeend']" );
    $time=$( "div[id="+flag+ "]>dd>div[id='timerange']" );
    $start.show();
    $end.show();
    $time.hide();
   });
  }

</ script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
JQuery 进入页面默认给已赋值的复选框打钩
Mar 23 jQuery
jQuery中map函数的两种方式
Apr 07 jQuery
jquery网页加载进度条的实现
Jun 01 jQuery
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
Aug 23 jQuery
jQuery封装animate.css的实例
Jan 04 jQuery
jquery点击回车键实现登录效果并默认焦点的方法
Mar 09 jQuery
JQuery中queue方法用法示例
Jan 31 jQuery
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
Jun 04 jQuery
jQuery内容选择器与表单选择器实例分析
Jun 28 jQuery
jquery绑定事件 bind和on的用法与区别分析
May 22 jQuery
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
May 29 jQuery
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 #jQuery
jquery实现动态创建form并提交的方法示例
May 27 #jQuery
jquery实现动态改变css样式的方法分析
May 27 #jQuery
通过jQuery学习js类型判断的技巧
May 27 #jQuery
jQuery中使用validate插件校验表单功能
May 24 #jQuery
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 #jQuery
jquery+php后台实现省市区联动功能示例
May 23 #jQuery
You might like
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
PHP内核探索之变量
2015/12/22 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
JS自调用匿名函数具体实现
2014/02/11 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
医药个人求职信范文
2014/01/29 职场文书
考试没考好检讨书
2014/01/31 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
年终晚会活动方案
2014/08/21 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
学前教育见习总结
2015/06/23 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS