效果如图,点击的条件出现在已选择的地方,点击已选择的条件可以删除当前点击的条件 语言是php 框架是laravel。
  
  一、html
  
  <div class="doctor-condition" id="doctor-condition">
  
  <dl>
  
  <dt>已选择</dt>
  
  <dd id="condition-checked" class="condition-checked"><span id="select-no">尚未选择</span></dd>
  
  </dl>
  
  <dl>
  
  <dt>按门诊科室</dt>
  
  <dd>
  
  <ul class="cate">
  
  @foreach($area as $item)
  
  <li>{{$item->clinic_name}}</li>
  
  @endforeach
  
  </ul>
  
  <ul class="depart" id="condition-depart">
  
  @foreach($area as $item)
  
  <li style="display: none;">
  
  @foreach($departs as $depart)
  
  @if($depart->area_id == $item->id)
  
  {{--{{url('doctorsList?dp='.$depart->id)}}--}}
  
  <a href="{{url('doctorsList?dp='.$depart->id)}}" data-id="{{$depart->id}}">{{$depart->depart_name}}</a>
  
  @endif
  
  @endforeach
  
  </li>
  
  @endforeach
  
  </ul>
  
  </dd>
  
  </dl>
  
  <dl>
  
  <dt>按职称</dt>
  
  <dd id="condition-position">
  
  @foreach($title as $item)
  
  <a href="{{url('doctorsList?pr='.$item->id)}}" data-id="{{$item->id}}">{{$item->title_name}}</a>
  
  @endforeach
  
  </dd>
  
  </dl>
  
  </div>
  
  二、js
  
  //初始化选中科室
  
  function selectedDepart(dp){
  
  if(dp){
  
  $("#select-no").html("");
  
  var depart = $("#condition-depart li>a[data-id="+dp+"]");
  
  depart.addClass("selected").siblings().removeClass("selected");
  
  var copyThisA = "<a id='selectA' onclick='conditionRemoveA($(this))'><span>"+depart.text()+"</span><i class='iconfont'></i></a>";
  
  if($("#selectA").length > 0) {
  
  $("#selectA span").html(depart.text());
  
  } else {
  
  $("#condition-checked").prepend(copyThisA);
  
  }
  
  }
  
  }
  
  //初始化选中职称
  
  function selectedPr(pr){
  
  if(pr){
  
  $("#select-no").html("");
  
  var title = $("#condition-position a[data-id="+pr+"]");
  
  title.addClass("selected").siblings().removeClass("selected");
  
  var copyThisB = "<a id='selectB' onclick='conditionRemoveB($(this))'><span>"+title.text()+"</span><i class='iconfont'></i></a>";
  
  if($("#selectB").length > 0) {
  
  $("#selectB span").html(title.text());
  
  } else {
  
  $("#condition-checked").append(copyThisB);
  
  }
  
  }
  
  }
  
  //筛选参数
  
  function getQueryString(){
  
  var result = location.search.match(new RegExp("[\?\&][^\?\&]+=[^\?\&]+","g"));
  
  if(result == null){
  
  return "";
  
  }
  
  for(var i = 0; i < result.length; i++){
  
  result[i] = result[i].substring(1);
  
  }
  
  return result;
  
  }
  
  //重新定义url
  
  function goSort(name,value,that) {
  
  var string_array = getQueryString();
  
  var oldUrl = document.URL;
  
  var newUrl;
  
  if (string_array.length > 0)//如果已经有筛选条件
  
  {
  
  var repeatField = false;
  
  for (var i = 0; i < string_array.length; i++) {
  
  if (!(string_array[i].indexOf(name) == -1)) {
  
  repeatField = true;//如果有重复筛选条件,替换条件值
  
  newUrl = oldUrl.replace(string_array[i], name + "=" + value);
  
  }
  
  }
  
  // 如果没有重复的筛选字段
  
  if (repeatField == false) {
  
  newUrl = oldUrl + "&" + name + "=" + value;
  
  }
  
  }
  
  if (string_array.length == false) {
  
  newUrl = document.URL + "?" + name + "=" + value;
  
  }
  
  that.attr('href', newUrl);
  
  }
  
  //删除筛选
  
  function deleteSort(name,that){
  
  var string_array = getQueryString();
  
  var oldUrl = document.URL;
  
  var newUrl = oldUrl.split('?')[0];
  
  var len = string_array.length;
  
  var reg=new RegExp(name);
  
  if(len > 0){
  
  for (var i=0;i<len;i++){
  
  if(string_array[i].match(reg)){
  
  string_array.pop(string_array[i]);
  
  }
  
  }
  
  }
  
  if(string_array.length>0){
  
  newUrl = newUrl+'?'+string_array[0]
  
  }
  
  that.attr('href',newUrl);
  
  }
  
  $(document).ready(function() {
  
  //初始化
  
  $("#doctor-condition .cate li:first").addClass('cur');
  
  $("#condition-depart li:first").show().siblings().hide();
  
  $("#doctor-condition .cate li").hover(function() {
  
  $(this).addClass("cur").siblings().removeClass("cur");
  
  $("#doctor-condition .depart li").eq($(this).index()).show().siblings().hide();
  
  });
  
  $("#condition-depart a").click(function() {
  
  $("#select-no").html("");
  
  $(this).addClass(www.mtyL1.com "selected").siblings().removeClass("selected");
  
  var copyThisA = "<a id='selectA'www.zhenghongyule.com onclick='conditionRemoveA($(this))'><span>"+$(this).text()+"</span><i class='iconfont'></i></a>";
  
  if($("#selectA").length > 0) {
  
  $("#selectA span").html($(this).text());
  
  } else {
  
  $("#condition-checked").prepend(copyThisA);
  
  }
  
  //筛选
  
  var value = $(this).attr('data-id');
  
  var name = 'dp';
  
  goSort(name,value,$(this));
  
  });
  
  $("#condition-position a").click(function() {
  
  $("#select-no").html("");
  
  $(this).addClass("selected").siblings().removeClass("selected");
  
  var copyThisB = "<a id='selectB' onclick='conditionRemoveB($(this))'><span>"+$(this).text()+"</span><i class='iconfont'></i></a>";
  
  if($("#selectB").length > 0) {
  
  $("#selectB span").html($(this).text());
  
  } else {
  
  $("#condition-checked").append(copyThisB);
  
  }
  
  //筛选
  
  var value = $(this).attr(www.hengtongyoule.com'data-id');
  
  var name = 'pr';
  
  goSort(name,value,$(this));
  
  });
  
  });
  
  function conditionRemoveA(ele){
  
  ele.remove();
  
  $("#condition-depart a.selected").removeClass('selected');
  
  if($("#condition-checked a"www.meiwanyule.cn/ ).length==0){
  
  $("#condition-checked #select-no").html("尚未选择");
  
  }
  
  //删除链接中的dp参数并重定向
  
  deleteSort('dp',ele);
  
  }
  
  function conditionRemoveB(ele){
  
  ele.remove();
  
  $("#condition-position a.selected").removeClass('selected');
  
  if($("#condition-checked a").length==0){
  
  $("#condition-checked #select-no").html("尚未选择");
  
  }
  
  //删除链接中的pr参数并重定向
  
  deleteSort('pr',ele);
  
  }
  
  三、php laravel
  
  //医生列表
  
  public function doctorsList(Request $request){
  
  $depart_id = $request[www.jlzkyy.com'dp'];//科室
  
  $title_id = $request['pr'];//职称
  
  $keyWord = $request['kw'];//搜索医生姓名或擅长
  
  $area = dpyy_area::where(www.gen-okamoto.com'is_clinic',www.xianjingshuiqi.com'1')->orderBy('sort','asc')->get();//片区
  
  $departs = dpyy_department::orderBy('area_id','asc')->get();//科室
  
  $title = index_title::orderBy(www.mren2yule.com/'sort','asc')->get();//职称
  
  //筛选医生
  
  if($keyWord){
  
  $doctor = index_doctors::where('doc_name','like','%'.$keyWord.'%')->orWhere('doc_good','like','%'.$keyWord.'%')->orderBy(DB::raw('RAND()'))->paginate(9);
  
  }else{
  
  $query = new index_doctors();
  
  if($depart_id){
  
  $query = $query->where('depart_id',$depart_id);
  
  }
  
  if($title_id){
  
  $query = $query->where('title_id',$title_id);
  
  }
  
  $doctor = $query->orderBy(DB::raw('RAND()'))->paginate(9);
  
  }
  
  return view('home.doctor.list',compact('area','title','doctor','departs','depart_id','title_id','keyWord'));
  
  localStorage 属性允许你访问一个 Document 源(origin)的对象 Storage,sessionStorage 属性允许你访问一个 session Storage 对象
  
  存储在 sessionStorage 里面的数据在页面会话结束时会被清除(页面会话在浏览器打开期间一直保持,并且重新加载或恢复页面仍会保持原来的页面会话),也就关闭浏览器会清除.localStorage 存储的数据能在跨浏览器会话保留,存储在 localStorage 的数据可以长期保留
  
  localStorage 和 sessionStorage 方法
  
  key() 该方法接受一个数值 n 作为参数,并返回存储中的第 n 个键名(Storage 的方法)
  
  setItem(key,data) 该方法接受一个键名作为参数,返回键名对应的值
  
  getItem(key) 该方法接受一个键名和值作为参数,将会把键值对添加到存储中,如果键名存在,则更新其对应的值
  
  removeItem(key) 该方法接受一个键名作为参数,并把该键名从存储中删除
  
  clear() 调用该方法会清空存储中的所有键名
  
  sessionStorage 的使用(localStorage 差不多)
  
  function initSession() {
  
  sessionStorage.clear();
  
  }
  
  function getSession(name)www.jrgjze.com/ {
  
  if (sessionStorage.getItem(name)) {
  
  return JSON.www.hengtongyoule.com parse(www.yongshi123.cn sessionStorage.getItem(name));
  
  }
  
  }
  
  function setSession(name, data) {
  
  var store = sessionStorage.getItem(www.dfgjpt.com name);
  
  if (store) {
  
  console.warn(name + "=>数据在sessionStorage已存在,执行替换操作");
  
  sessionStorage.removeItem(name);
  
  }
  
  sessionStorage.setItem(name, JSON.stringify(data));
  
  }
  
  //sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据
  
  export { initSession, getSession, setSession };
  
  Docs
  
  MDN - document.cookie
  
  MDN - localStorage
  
  MDN - sessionStorage
  
  MDN - Storage
  
  Cookies and Security
  
  JavaScript Cookie

php laravel 多条件筛选的更多相关文章

  1. 织梦CMS实现多条件筛选功能

    用织梦实现筛选的功能,其实主要就是运用到了织梦的高级搜索功能,然后用ajax去post替换掉本来的结果就可以了. 其实筛选的话,主要有两个问题需要解决,一个是前台的筛选实现,一个是后台根据前台的点击, ...

  2. Hbase条件筛选

    需求来自于,模糊查找当天的所有记录,并查找对应列的记录数 public static void main(String[] args) throws Exception{ //创建HBase连接 Co ...

  3. iOS: 悬浮的条件筛选框使用二

    一.介绍: 在前面已经介绍了一种条件悬浮框,使用的是tableView的Plain分组样式实现的,因为这是tableView本身就具备的功能,分组悬浮效果.这次我来介绍第二种更加简单的方法,采用两个S ...

  4. iOS: 悬浮的条件筛选下拉框的使用

    1.介绍 app中条件筛选视图是很常用的功能,一般它搭配着tableView的表头悬浮滚动使用,点击按钮时,就会弹出下拉框显示条件,选择一个条件后,下拉框自动隐藏. 2.效果图如下 从中间点击弹出,然 ...

  5. 求解:php商品条件筛选功能你是怎么做出来的?

    求解:php商品条件筛选功能你是怎么做出来的? 2013-09-25 13:43 chenhang607 | 浏览 2756 次 资源共享 求思路或者方法,最好能有些代码 2013-09-25 14: ...

  6. c#中如何不通过后台直接用js筛选gridview中的数据条件筛选查询?

    js: //条件筛选 var showstate = true; function imagechange() { if (showstate) { $('#_toggle').hide(500, f ...

  7. Excel多条件筛选、公式填充

    接到一个任务,由于数据操作人员不会使用编辑公式进而无法进行相关筛选,所以要我帮忙.好久不碰Excel了,那就试试看吧. 需求是这样子的(这里做了最大化的简化):要求判断条件,男50岁以上,女40岁以上 ...

  8. HBase多条件筛选查询方案

    最近的项目需要使用Hbase做实时查询,由于Hbase只支持一级索引,也就是使用rowkey作为索引查询,所以对于多条件筛选查询的支持不够,在不建立二级索引的情况下,只能使用Hbase API中提供的 ...

  9. 记录下url拼接的多条件筛选js

    本着为提高工作效率百度或者google这些代码发现拿过来的都不好用,然后自己写了个,写的一般但记录下以后再优化 <html> <head> <script> $(f ...

随机推荐

  1. 一篇自己都看不懂的CDQ分治&整体二分学习笔记

    作为一个永不咕咕咕的博主,我来更笔记辣qaq CDQ分治 CDQ分治的思想还是比较简单的.它的基本流程是: \(1.\)将所有修改操作和查询操作按照时间顺序并在一起,形成一段序列.显然,会影响查询操作 ...

  2. Luogu1344 追查坏牛奶 最小割

    题目传送门 题意:给出$N$个节点$M$条边的有向图,边权为$w$,求其最小割与达到最小割的情况下割掉边数的最小值.$N \leq 32,M \leq 1000,w\leq 2 \times 10^6 ...

  3. NOI Day2线上同步赛崩盘记

    Preface 蒟蒻愉快的NOI线上赛Day2之行,不过因为太菜就凉了 这次由于策略&&网络的问题,最后两题都没有交,结果就靠T1稳住拿了75分就回家了. 我真是太菜了. 屠龙勇士 首 ...

  4. 扩展ASP.NET Identity使用Int做主键

    当我们默认新建一个ASP.NET MVC项目的时候,使用的身份认证系统是ASP.NET Identity.但是这里的Identity使用的主键为String类型的GUID.当然这是大多数系统首先类型. ...

  5. LVM : 缩减文件系统的容量

    有扩展就有缩减,我们在前文<LVM : 扩展文件系统的容量>中介绍了通过 LVM 扩展文件系统的方法,本文我们接着前文的 demo 介绍通过 LVM 缩减文件系统的方法.说明:本文的演示环 ...

  6. 分布式监控系统Zabbix-3.0.3-完整安装记录(3)-监控nginx,php,memcache,Low-level discovery磁盘IO

    前段时间在公司IDC服务器上部署了zabbix3.0.3监控系统,除了自带的内存/带宽/CPU负载等系统资源监控模板以及mysql监控模板外,接下来对诸如nginx.php.memcache.磁盘IO ...

  7. Linux内核及分析 第二周 操作系统是如何工作的?

    计算机是如何工作的? 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函 ...

  8. Android Studio中的Gradle是干什么的

    作者:ghui链接:https://www.zhihu.com/question/30432152/answer/48239946来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  9. ABP编译必须添加对程序集“netstandard, Version=2.0.0.0错误

    当前使用ABP版本为:4.6.0 升级vs2017到15.4版本,升级framework到4.7版本 如果Core版本请升级到net core 2

  10. String系列-----AbstractStringBuilder

    1. AbstractStringBuilder是StringBuffer和StringBuilder的父类 package com.amazing.jdk.string_2017_12_31; im ...