# 动态下拉(SelectPage)
YznCMS中的动态下拉列表使用的是优秀强大的`Selectpage`插件。
### 常规用法
下面介绍一个基础的动态下拉列表示例,如下
```
<input data-source="{:url('admin/pickup.activity/index')}" class="layui-input selectpage" name="row[name]" type="text" value="">
```
其中需要给元素class添加一个`selectpage`,其次需要增加一个`data-source="{:url('admin/pickup.activity/index')}"`这个属性,`{:url('admin/pickup.activity/index')}`为我们控制器提交列表的方法URL
YznCMS的`Selectpage`列表中`显示字段`默认读取的是`name`字段,如果我们返回的列表中不包含`name`字段,将无法展现下拉列表数据。此时我们需要添加使用`data-field="你要显示的字段"`即可,例如`data-field="title"`。
YznCMS的`Selectpage`列表中`主键字段`默认读取的是`id`字段,如果我们的主键不是`id`字段,则我们可以添加并使用`data-primary-key="你的主键ID字段"`来修改,例如`data-primary-key="productid"`。
### 常用属性
| 属性 | 功能 | 示例 |
| --- | --- | --- |
| data-source | 提供数据源的URL地址或JSON数据 | data-source="category/index" |
| data-field | 列表显示读取的字段 | data-field="username" |
| data-search-field | 搜索的字段 | data-search-field="nickname,username" |
| data-primary-key | 列表选中后渲染的字段 | data-primary-key="uid" |
| data-pagination | 是否开启分页 | data-pagination="true" |
| data-page-size | 分页大小 | data-page-size="10" |
| data-multiple | 是否支持多选 | data-multiple="true" |
| data-max-select-limit | 最多可选择数量 | data-max-select-limit="3" |
| data-order-by | 排序字段 | data-order-by="id" |
| data-params | 自定义扩展参数 | data-params='{"custom\[type\]":"test"}' |
| data-select-only | 是否为只读模式 | data-select-only="true" |
| data-format-item | 列表行模板 | data-format-item="{title} - {author}" |
| disabled | 禁用SelectPage组件 | disabled |
### 附加请求参数
如果需要简单的进行搜索筛选过滤,可以使用
~~~json
//筛选status为normal,type为1的数据
data-params='{"custom[status]":"normal","custom[type]":"1"}'
//筛选status为normal或hidden的数据,in为操作符,语法请参考文档:https://www.kancloud.cn/manual/thinkphp5_1/354004
data-params='{"custom[status]":["in","normal,hidden"]}'
~~~
`data-params`支持`function`类型,如果需要动态传参(例如联动查询),则可以在JS中将`data-params`添加一个`function`处理即可,请在表单初始化`yznForm.bindevent`之前使用,例如传递动态选择的类型
~~~js
$("#c-name").data("params", function (obj) {
//obj为SelectPage对象
return {custom: {type: $("#c-type").val()}};
});
~~~
### 数据源
`data-source`支持`Object`和`远程URL返回`两种方式,如:
~~~html
data-source='[{"id":"1","title":"标题1"},{"id":"2","title":"标题2"}]'
~~~
和
~~~html
data-source="{:url('admin/pickup.activity/index')}"
~~~
当使用远程数据源的方式时需要远程返回JSON数据,如:
~~~js
{
"list":[{"id":4,"username":"YznCMS","nickname":"御宅男","avatar":"","pid":0},{"id":6,"username":"thinkphp","nickname":"流年","avatar":"","pid":0}],
"total":30
}
~~~
其中`list`为数据列表,`total`为总记录数,总记录数将用于前端显示分页使用。
### 事件监听
如果你需要对`SelectPage`组件值变更以后的事件进行监听,可以直接监听文本框的`change`事件即可,如:
~~~js
$(document).on("change", "#c-title", function(){
//后续操作
});
~~~
也可使用
~~~js
$("#c-title").data("eSelect", function(){
//后续操作
});
~~~
> 注意以上代码需要放在元素初始化`yznForm.bindevent`之前。
更多的使用方法请参考[Selectpage官方教程](https://terryz.github.io/selectpage/index.html)
- 序言
- 使用条款
- 安装
- 环境搭建
- 目录结构
- 钩子和行为
- 表单生成
- 数据限制
- 命令行
- 一键生成CRUD
- 一键生成菜单
- 一键安装
- 系统配置
- 常规字段
- 特殊字段1:下拉框(高级)字段
- 特殊字段2:自定义字段
- 特殊字段3:自定义多图片
- 系统函数/类
- 函数说明
- cache - 缓存管理
- thumb - 获取缩略图
- str_cut - 字符截取
- 邮箱/短信
- 插件使用说明
- cms内容管理【cms】
- 变量/常量
- 函数
- getCategory - 栏目获取
- catpos - 面包屑
- seo - 生成SEO
- buildCatUrl - 生成栏目URL
- buildContentUrl - 创建内容链接
- 标签
- 公共参数
- 栏目标签
- 列表标签
- 上一页标签
- 下一页标签
- Tags标签
- 万能标签
- 原生标签
- 搜索页
- 筛选页
- 内容详情页
- 模板
- 技巧/问题
- 将CMS路由设置更简洁
- 外链和单页如何增加列表类型的子栏目
- 如何合理设置SEO
- 实现电脑和手机模板分离
- 敏感词检测
- 栏目授权不全
- 内容页分页
- 分页伪静态
- tag标签不支持特殊字符
- 部分虚拟主机tags页面报错
- 循环表格
- 二级目录搭建知识点
- 阅读收费
- 会员插件【member】
- 介绍
- 自定义表单【formguide】
- 调用方式
- 模板
- 支付插件【pay】
- 支付宝
- 微信
- 常见问题
- 接口文档【apidoc】
- 简介
- 配置
- 使用
- 万能采集【collection】
- 采集列表规则
- 采集内容规则
- 关于图片
- 案例一:采集yzncms论坛
- cms小程序【wxcms】(重构已下架)
- 前端
- H5设计【diywap】
- 返回顶部【returntop】
- 通用数据导出【dataoutput】
- 多通道短信【easysms】
- 塞邮邮箱【saiyouems】
- 第三方登录【synclogin】
- 中文分词【getwords】
- QQ客服【kefu】
- 地图位置【address】
- 智能人机验证【vaptcha】
- 行为验证码【ajcaptcha】
- 数据转换【v9toyzn】
- 数据转换【dedetoyzn】
- 百度收录查询【baidurecord】
- 蜘蛛访问统计【spider】
- editormd编辑器【editormd】
- 敏感词检测【sensitive】
- 邮箱发送【phpmailer】
- 内容收藏【favorite】
- 队列插件【queue】
- 七牛云【qiniu】
- 阿里云oss【alioss】
- 腾讯云【cos】
- 迅搜全文检索【xunsearch】
- 评论插件【comments】
- 网页即时通讯【webim】(重构已下架)
- 生成js
- window使用
- linux使用(推荐)
- 常见问题
- 友情链接【links】
- 考试插件【kaoshi】(暂停)
- 会员邀请【invite】
- 快递查询插件【expressquery】
- 礼品卡提货系统【pickup】
- 地区插件【area】
- IP归属地查询【ipregion】
- 百度统计插件【baidutongji】
- 消息通知【notice】
- 微信管理【wechat】
- 在线投票系统【vote】
- 前端&组件
- 后台前端框架
- 文件上传
- table数据表格
- auth权限验证
- 动态显示(Favisible)
- 动态下拉(SelectPage)
- 键值组件(Fieldlist)
- uniapp教程
- 常见问题
- YznCMS开发遇到错误怎么办?(新手必看)
- 关闭调试模式
- 伪静态(URL重写)
- 虚拟主机不支持绑定public的方法
- 各类虚拟主机伪静态使用注意事项
- 百度编辑器多图片上传被压缩
- 部分虚拟主机隐藏index.php有问题
- 后台路径admin.php修改
- 后台密码忘记重置方法
- 宝塔面板一键部署
- 后台登录时验证码不显示
- 小程序图片不显示
- 如何自定义404页面显示模板
- 管理员登录时提示请于1天后再尝试登录
- composer
- composer简介
- 内置composer
- 各大厂商镜像地址
- 常用命令
- 拓展知识
- 助手类
- thinkphp维护
- 插件开发
- 目录结构
- 数据库
- 测试数据
- 插件信息
- 插件配置
- 核心文件
- 插件函数
- 🔥开发者入驻
- 申请入驻
- 建立私库
- 插件入驻流程
- 模板入驻流程
- 安全建议
- 更新日记和补丁包