TopJUI Combobox 联动

Posted lxz-jlu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TopJUI Combobox 联动相关的知识,希望对你有一定的参考价值。

这里给联动进行一个简单定义:因Combobox选择或输入的值发生改变时对自身或者其它组件产生影响称为联动。(注:editable确定是否可以手动输入)

有两种实现方法:

一、自己写对应的onChange、onSelect方法进行联动。这种方法灵活性强一些。

注意这两个方法的激发条件即可,尤其注意在数据赋值而激发的负面影响,会导致loadData事件失效。

详细可参考JQuery/EasyUI内的文档,较为全面。

二、调用框架内部内置的方法

以地区四级联动为例

 1 <fieldset>
 2     <legend>地址选择</legend>
 3 </fieldset>
 4 <div class="topjui-row">
 5     <div class="topjui-col-sm6">
 6         <label class="topjui-form-label"></label>
 7         <div class="topjui-input-block">
 8         <input type="text" id="province" name="province" data-toggle="topjui-combobox"
 9             data-options="valueField:‘text‘,url:contextPath + ‘/common/_address.jsp?areaName=-1‘,
10                        childCombobox:{ id:‘city‘, url:contextPath + ‘/common/_address.jsp?areaName={parentValue}‘}">
11         </div>
12     </div>
13     <div class="topjui-col-sm6">
14         <label class="topjui-form-label"></label>
15         <div class="topjui-input-block">
16         <input type="text" id="city" name="city" data-toggle="topjui-combobox"
17             data-options="valueField:‘text‘,
18                 childCombobox:{ id:‘county‘, url:contextPath + ‘/common/_address.jsp?areaName={parentValue}‘}">
19         </div>
20     </div>
21 </div>
22 <div class="topjui-row">
23     <div class="topjui-col-sm6">
24         <label class="topjui-form-label">县/区</label>
25         <div class="topjui-input-block">
26         <input type="text" id="county" name="county" data-toggle="topjui-combobox" data-options="valueField:‘text‘">
27         </div>
28     </div>
29     <div class="topjui-col-sm6">
30         <label class="topjui-form-label">地址</label>
31         <div class="topjui-input-block">
32         <input type="text" id="street" name="street" data-toggle="topjui-textbox" 
33             data-options="validType:‘length[0,50]‘">
34         </div>
35     </div>
36 </div>

childCombobox在onChange中激活,即值发生改变后会同步联动其相关联的组件,代码如下:

1 if ("object" == typeof d.childCombobox) {
2     var e = d.childCombobox,
3         f = a("#" + e.id);
4     if (f.combobox("setText", ""), f.combobox("setValue", ""), e.url) {
5         var g = e.url.replace("{parentValue}", b);
6         f.combobox("reload", g)
7     }
8 }

可以在此添加与其它组件间的联动,如添加对文本框的联动

 1 if ("object" == typeof d.childTextbox) { 
 2     var e = d.childTextbox,
 3         f = a("#" + e.id);
 4     if (f.textbox("setText", ""), f.textbox("setValue", ""), e.url) {
 5         var g = e.url.replace("{parentValue}", b);
 6         $.getJSON(g, function (da) {
 7             f.textbox("setValue", da.text);
 8             f.textbox("setText", da.text);
 9         });
10     }
11 }

附:全国行政三级地区数据下载地址(四级过大)

CREATE TABLE `s_area` (
  `areaId` int(20) NOT NULL COMMENT ID,
  `areaCode` varchar(50) NOT NULL COMMENT  地区码,
  `areaName` varchar(30) NOT NULL COMMENT 地区名称,
  `level` tinyint(4) DEFAULT -1 COMMENT 级别,
  `cityCode` varchar(50) DEFAULT NULL COMMENT 电话区号,
  `center` varchar(50) DEFAULT NULL COMMENT 经纬度,
  `parentId` int(20) NOT NULL,
  `zipCode` varchar(6) NOT NULL DEFAULT 000000 COMMENT 邮编,
  `fullName` varchar(50) NOT NULL DEFAULT ‘‘ COMMENT 地址全称,
  PRIMARY KEY (`areaId`,`parentId`,`areaName`),
  KEY `areaCode` (`areaCode`),
  KEY `parentId` (`parentId`),
  KEY `level` (`level`),
  KEY `areaName` (`areaName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=地区码表;
链接:https://pan.baidu.com/s/1gSnjtc1Yq1KovUB-j63KUw 
提取码:mhdl 

以上是关于TopJUI Combobox 联动的主要内容,如果未能解决你的问题,请参考以下文章

ComboBox,三级联动菜单,新入门点小白,有些代码有待优化,大神勿喷

WPF的DataGrid中,如何让两个ComboBox联动?

关于c#里如何实现combobox的联动,上一个选择一个选项,下一个就不能选择,可以显示成灰色不可选?

ComboBox的数据联动

Combobox下拉框两级联动

c# 做省市县联动