php laravel 多条件筛选
效果如图,点击的条件出现在已选择的地方,点击已选择的条件可以删除当前点击的条件 语言是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 多条件筛选的更多相关文章
- 织梦CMS实现多条件筛选功能
用织梦实现筛选的功能,其实主要就是运用到了织梦的高级搜索功能,然后用ajax去post替换掉本来的结果就可以了. 其实筛选的话,主要有两个问题需要解决,一个是前台的筛选实现,一个是后台根据前台的点击, ...
- Hbase条件筛选
需求来自于,模糊查找当天的所有记录,并查找对应列的记录数 public static void main(String[] args) throws Exception{ //创建HBase连接 Co ...
- iOS: 悬浮的条件筛选框使用二
一.介绍: 在前面已经介绍了一种条件悬浮框,使用的是tableView的Plain分组样式实现的,因为这是tableView本身就具备的功能,分组悬浮效果.这次我来介绍第二种更加简单的方法,采用两个S ...
- iOS: 悬浮的条件筛选下拉框的使用
1.介绍 app中条件筛选视图是很常用的功能,一般它搭配着tableView的表头悬浮滚动使用,点击按钮时,就会弹出下拉框显示条件,选择一个条件后,下拉框自动隐藏. 2.效果图如下 从中间点击弹出,然 ...
- 求解:php商品条件筛选功能你是怎么做出来的?
求解:php商品条件筛选功能你是怎么做出来的? 2013-09-25 13:43 chenhang607 | 浏览 2756 次 资源共享 求思路或者方法,最好能有些代码 2013-09-25 14: ...
- c#中如何不通过后台直接用js筛选gridview中的数据条件筛选查询?
js: //条件筛选 var showstate = true; function imagechange() { if (showstate) { $('#_toggle').hide(500, f ...
- Excel多条件筛选、公式填充
接到一个任务,由于数据操作人员不会使用编辑公式进而无法进行相关筛选,所以要我帮忙.好久不碰Excel了,那就试试看吧. 需求是这样子的(这里做了最大化的简化):要求判断条件,男50岁以上,女40岁以上 ...
- HBase多条件筛选查询方案
最近的项目需要使用Hbase做实时查询,由于Hbase只支持一级索引,也就是使用rowkey作为索引查询,所以对于多条件筛选查询的支持不够,在不建立二级索引的情况下,只能使用Hbase API中提供的 ...
- 记录下url拼接的多条件筛选js
本着为提高工作效率百度或者google这些代码发现拿过来的都不好用,然后自己写了个,写的一般但记录下以后再优化 <html> <head> <script> $(f ...
随机推荐
- C#中byte[]类型转换为其它类型
我们这里就举byte[]类型和long类型的转换,其它数据类型用BitConverter类以此类推: /// <summary> /// 字节数组转换为long类型 /// </su ...
- url 传递中文参数乱码问题的终极解决方法。
估计很多人在做web开发的时候,都会碰到过url传递中文参数,有时候会出现乱码的问题,但有些项目或者环境,又不会有问题.当遇到乱码的时候,上网找了很多解决方案,比如: 页面设置它的编码方式,改成utf ...
- HNOI2019 多边形 polygon
HNOI2019 多边形 polygon https://www.luogu.org/problemnew/show/P5288 这题镪啊... 首先堆结论: 显然终止状态一定是所有边都连向n了 根据 ...
- InnoDB 文件系统
1. 操作系统文件系统inode 2. InnoDB的存储结构 2.1Innodb inode page 参考 http://mysql.taobao.org/monthly/2016/02/01/ ...
- 机器学习 第四篇:OLS回归分析
变量之间存在着相关关系,比如,人的身高和体重之间存在着关系,一般来说,人高一些,体重要重一些,身高和体重之间存在的是不确定性的相关关系.回归分析是研究相关关系的一种数学工具,它能帮助我们从一个变量的取 ...
- 基于SimpleChain Beta的跨链交互与持续稳态思考
1. 区块链扩展性迷局 比特币作为第一个区块链应用与运行到目前为止最被信任的公链,其扩展性问题却持续被作为焦点贯穿着整个链的发展周期.事实上,在2009年1月4日比特币出现的那一天到2010年10月1 ...
- linux下用户操作记录审计环境的部署记录
通常,我们运维管理人员需要知道一台服务器上有哪些用户登录过,在服务器上执行了哪些命令,干了哪些事情,这就要求记录服务器上所用登录用户的操作信息,这对于安全维护来说很有必要.废话不多说了,下面直接记录做 ...
- Linux内核分析作业第五周
系统调用的三个层次(下) 一.给MenuOS增加time和time-asm命令 1.克隆并自动编译 MenuOS rm menu -rf 强制删除原menu文件 git clone https://g ...
- 20135316Linux内核学习笔记第八周
20135316王剑桥<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 一.进程调度与进程调度的时机分析 ...
- 广商博客冲刺第三天new
第二天沖刺傳送門 第三四天沖刺傳送門 这一天我们主要是弄网页前台设计跟框架设计,这方面主要是由张奇聪负责.我们在amaze ui,smart ui,angularjs+bootstrap中挑选,最终选 ...