二级联动,或三级联动,在开发中是经常需要用到的,selectpage组件没有联动属性,但通过写在相应的页面中写js可以实现,但由于联动运用较多,每个页面写则太不好写,通过修改selectpage.js源码,扩展了联动属性,现在调用起来就非常方便了,只需要加上相应的属性,就完成了联动,如在表单中 <input id="c-zone_id" data-first-title="请选择" data-rule="required" data-source="xjz/zone/index"** data-linkage='#c-school_id' data-linkage-field='zone_id'** data-order-by='weigh' class="form-control selectpage" name="row[zone_id]" type="text" value="{$row.zone_id|htmlentities}">,同样在搜索中也可以用 {field: 'zone_id', title: __('Zone_id'), addClass: "selectpage", extend: "data-linkage='#school_id' data-linkage-field='zone_id' data-source='xjz/zone/index' data-primary-key='id' data-order-by='weigh' data-field='name'"},再在服务器写上相应的代码,就实现了。
扩展代码如下:
SelectPage.prototype.linkage = function (option) { var t=this.option.linkage; if(!t)return; t=$(t); var input=this.elem.hidden; var field=this.option.linkageField; input.on('change',function () {t.selectPageClear();}); t.data("params", function(){ var v=input.val(),r={custom:{}};r.custom[field]=v; return r; });}
后台代码:在被联动 index方法中 加入查询语句
$param = $this->request->param();if(isset($param['custom'])){$where['zone_id']=$param["custom"]["zone_id"]; }list($where, $sort, $order, $offset, $limit) = $this->buildparams();$list = $this->model->with(['zone'])->where($where)->order($sort, $order)->paginate($limit);
需要完整的js代码,请发邮件到:329654307@qq.com
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。