🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
回顾前面的screen标签: ``` {screen molds="product" orderby="orders desc" as="s"} 自定义字段名字:{$s['fieldname']} 自定义字段选项输出: 默认全部/全选: 对应链接:{$s['url']} 判断选中:{if(!isset($filters[$s['field']]))}选中全部{/if} 对应值为:0 {foreach $s['list'] as $ss} *每个选项链接:{$ss['url']} 每个选项字段:{$s['field']} 每个选项名称:{$ss['value']} 每个选项对应的值:{$ss['key']} 判断是否已选: {if(isset($filters[$s['field']]) && strpos(','.$filters[$s['field']].',',','.$ss['key'].',')!==false)} 这里写选中时的标识 {/if} {/foreach} {/screen} ``` > 前面提到过,选项链接的缺省值,都讲的是单选筛选,也就是说,一个选择字段,只能选择一个参数,不能选择多个参数。 比如:颜色colors:红色,白色,黄色,只能选择一种颜色进行筛选。 现在我就要讲解如何支持同时选择红色、白色两个选项的筛选 (官方DEMO就是多选筛选) 多选筛选关键一个地方在于,如何把多个选项同时传给后端处理,我用官方demo中的筛选链接讲解。 `http://demo.jizhicms.cn/screen-product-1-categories-1,2-brands-1-os-.html` `screen`:标识这个链接请求的是screen筛选控制器 `product`:产品模块的标识 `1`:对应的栏目ID值 `categories-1,2-brands-1-os-`:传递的筛选参数 很容易看出上面传递的筛选参数用`-`拼接两个参数,用`,`拼接多个参数值,而空值则代表缺省 ajax请求多选筛选: ``` function get_tpl(jz_screen){ var tid = {$type['id']}; var molds = "{$type['molds']}"; //Screen/index/molds/$1/tid/$2/jz_screen/$3 //screen-molds-tid-jz_screen var gourl = '{fun get_domain()}/screen-'+molds+'-'+tid+'-'+jz_screen+'.html'; $("#gourl").val(gourl); $.ajax({ url:"{fun U('screen/index')}",//请求的url地址 // dataType:"json",//返回格式为json async:true,//请求是否异步,默认为异步,这也是ajax重要特性 data:{tid:tid,molds:molds,jz_screen:jz_screen,ajax:1,ajax_tpl:1},//参数值 type:"GET",//请求方式 beforeSend:function(){ //请求前的处理 }, success:function(r){ if(r==1){ $(".products").html('暂无数据~');return false; } $(".products").html(r); }, complete:function(){ //请求完成的处理 }, error:function(){ //请求出错处理 alert('网络错误'); } }) } ``` > 用`jz_screen`作为筛选字段的拼接的参数传递,筛选控制器处理这个字段内拼接的参数及参数值