本文详解如何在jQuery EasyUI中创建树形下拉框(ComboTree)。通过HTML class属性自动渲染,结合远程JSON数据源,实现带有树形结构的下拉选择功能。包含完整的表单代码示例、数据格式说明及常用配置项解析,帮助开发者快速实现复杂层级选择交互。
树形下拉框最终效果预览

树形下拉框(ComboTree)是 EasyUI 中结合了 ComboBox(下拉框)与 Tree(树形控件)特性的组件。它允许用户在下拉面板中浏览层级结构,并选择一个特定的节点。该组件可直接作为表单字段使用,支持通过 url 属性从远程服务器异步加载树形数据,非常适合用于城市、部门、分类等具有层级关系的选择场景。
前置准备与环境要求
在开始编码前,请确保您的项目已正确引入 jQuery EasyUI 的核心资源:
- jQuery 库:ComboTree 依赖 jQuery,请确保已引入对应版本的
jquery.min.js。 - EasyUI 核心文件:引入
easyui.min.js和easyui.css。 - 主题样式:确保引入了合适的主题 CSS 文件(如
default/easyui.css)。 - 远程数据源:准备一个返回标准 JSON 格式数据的接口或静态文件,用于提供树形节点数据。
创建包含 ComboTree 的表单
我们将构建一个注册表单,其中包含姓名、地址和普通文本输入框,以及一个关键的“城市”字段,该字段使用 ComboTree 实现。
第1步:定义 HTML 表单结构
在 HTML 中,只需为 标签添加 class="easyui-combotree" 属性,EasyUI 即可自动将其渲染为树形下拉框。无需编写额外的 JavaScript 初始化代码。
以下是完整的表单 HTML 代码:
Account Information
关键点解析:
class="easyui-combotree":这是触发自动渲染的核心属性。url="data/city_data.json":指定从远程 JSON 文件加载树形数据。EasyUI 会自动发起 AJAX 请求获取数据并构建树结构。name="city":表单提交时,该字段的值(即选中节点的 ID)将通过此名称提交给服务器。
第2步:准备远程树形数据(JSON 格式)
为了让 ComboTree 正常工作,远程数据源(如 data/city_data.json)必须返回符合 EasyUI Tree 组件要求的 JSON 数组。每个节点通常包含 id、text 和 children 属性。
示例数据格式如下:
[ { "id":1, "text":"广东省", "children":[ { "id":2, "text":"广州市", "children":[ { "id":3, "text":"天河区" }, { "id":4, "text":"越秀区" } ] }, { "id":5, "text":"深圳市", "children":[ { "id":6, "text":"南山区" }, { "id":7, "text":"福田区" } ] } ] }, { "id":8, "text":"浙江省", "children":[ { "id":9, "text":"杭州市" }, { "id":10, "text":"宁波市" } ] }]数据结构说明:
id:节点的唯一标识,提交表单时将返回此值。text:节点显示的文本内容。children:子节点数组,若存在则显示为可展开的父节点。
第3步:处理表单提交与数据获取
虽然 ComboTree 自动渲染,但通常我们需要在提交表单时处理数据。以下是一个简单的 JavaScript 示例,展示如何获取 ComboTree 的值:
function savereg() { // 获取表单数据 var cityValue = $('#ff').form('getValue', 'city'); console.log('Selected City ID:', cityValue); // 这里可以添加 AJAX 提交逻辑 // $.post('submit_url', $('#ff').serialize(), function(response) { ... }); }ComboTree 常用配置项说明
除了基础的 url 和 class,ComboTree 还支持丰富的配置项,可通过 HTML 属性或 JavaScript 对象进行设置:
valueField:指定数据中作为值的字段名,默认为id。textField:指定数据中作为显示文本的字段名,默认为text。editable:布尔值,默认为true。若设为false,则禁止用户手动输入,只能从树中选择。multiple:布尔值,默认为false。若设为true,则允许多选。panelHeight:设置下拉面板的高度,默认为auto。
例如,禁止手动输入并设置面板高度:
常见问题与调整
问题1:下拉框显示空白或无法加载数据
- 表现:点击下拉框无反应,或面板为空。
- 原因:远程
url路径错误,或返回的 JSON 格式不符合 EasyUI Tree 要求(如缺少id或text)。 - 解决方法:检查浏览器控制台 Network 标签,确认 AJAX 请求是否成功,并验证返回的 JSON 数据结构。
问题2:提交表单时获取不到正确的城市 ID
- 表现:后端接收到的
city值为空或为文本而非 ID。 - 原因:未正确配置
valueField,或手动输入了文本导致值与 ID 不匹配。 - 解决方法:确保
valueField设置为id,并检查name属性与后端接收参数一致。
总结
通过本文,我们学习了如何使用 jQuery EasyUI 的 ComboTree 组件创建树形下拉框。核心要点包括:利用 class="easyui-combotree" 实现自动渲染,通过 url 属性加载远程 JSON 数据,以及确保 JSON 数据格式符合 id、text、children 的结构。合理配置 editable、multiple 等属性,可以满足不同场景下的层级选择需求。
以上就是 jQuery EasyUI 树形下拉框(ComboTree)创建与配置的详细内容,更多关于 jQuery EasyUI 表单组件的资料请关注本站其它相关文章!
