🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
form.js function formatRepo (repo) { if (repo.loading) return repo.text; var markup = [ '<li class="select2-result_option" role="treeitem" id="repo.id">', repo.text, '</li>' ].join(''); return markup; } // select2 ajax 加载数据 $('.select-ajax').each(function(index, el) { var $this = $(this); $this.select2({ width: "100%", //设置下拉框的宽度 ajax: { a:$(this), b:this, c:self, url: $this.data('url'), dataType: 'json', delay: 250, data: function (params) { return { q: params.term, // search term page: params.page }; }, processResults: function (data, params) { // parse the results into the format expected by Select2 // since we are using custom formatting functions we do not need to // alter the remote JSON data, except to indicate that infinite // scrolling can be used params.page = params.page || 1; return { results: data.data, pagination: { more: (params.page * 10) < data.total } }; }, cache: false }, escapeMarkup: function (markup) { return markup; }, // let our custom formatter work minimumInputLength: 1, templateResult: formatRepo, // omitted for brevity, see the source of this page }); builder ~~~ /** * 添加普通联动表单项 * @param string $name 表单项名 * @param string $title 表单项标题 * @param string $tips 表单项提示说明 * @param array $options 表单项options * @param string $default 默认值 * @param string $ajax_url 数据异步请求地址 * 可以用Url方法生成,返回数据格式必须如下: * $arr['code'] = '1'; //判断状态 * $arr['msg'] = '请求成功'; //回传信息 * $arr['list'] = [ * ['key' => 'gz', 'value' => '广州'], * ['key' => 'sz', 'value' => '深圳'], * ]; //数据 * return json($arr); * status用于判断是否请求成功,list将作为$next_items第一个表单名的下拉框的内容 * @param string $next_items 下一级下拉框的表单名 * 如果有多个关联关系,必须一同写上,用逗号隔开, * 比如学院作为联动的一个下拉框,它的下级是专业,那么这里就写上专业下拉框的表单名,如:'zy' * 如果还有班级,那么切换学院的时候,专业和班级应该是一同关联的 * 所以就必须写上专业和班级的下拉框表单名,如:'zy,bj' * @param string $param 指定请求参数的key名称,默认为$name的值 * 比如$param为“key” * 那么请求数据的时候会发送参数key=某个下拉框选项值 * @author 蔡伟明 <314013107@qq.com> * @return mixed */ public function addSelectAjax($name = '', $title = '', $tips = '', $options = [], $default = '', $extra_attr, $ajax_url, $param = '') { $item = [ 'type' => 'select2ajax', 'name' => $name, 'title' => $title, 'tips' => $tips, 'value' => $default, 'options' => $options, 'ajax_url' => $ajax_url, 'param' => $param == '' ? $name : $param, ]; if ($this->_is_group) { return $item; } $this->_vars['search_form_items'][] = $item; return $this; } ~~~