EasyUI的combobox使用总结

一,combobox的属性,事件和方法

combobox可以配置属性,绑定事件监听,调用方法,理解这几个概念之后会对combobox有更清晰的了解。

1,配置属性

combobox可以配置自己的属性,他的属性可以定义在

也可以在JavaScript代码中指定:

$('#type').combobox({

         url:'getType.do',

         valueField:'id',

         textField:'text'

});

其中url,valueField,textField,都是combobox的属性,属性值应该用引号包裹。

2,绑定事件

combobox可以绑定事件监听,事件可以绑定在

这个事件绑定表示选项更换之后会调用JavaScript中定义的changeType()函数

也可以在JavaScript代码中指定,比如用下面的代码绑定onSelect事件:

$('#type').combobox({

         onSelect: function (n,o) {

         }

});

3,调用方法

combobox可以调用一些方法,可调用的方法参见EasyUI的文档。

比如调用setValue方法:

$("#type").combobox('setValue','somevalue')

其中'setValue'是方法名,'somvalue'是参数。

有的方法没有参数,比如getValue方法:

var number=$("#number").combobox('getValue');

 

二,combobox的普通操作

如果有如下的combobox定义:

$("#number").combobox({

         onChange: function (n,o) {

                   changeNumber();

         }

});

1,获取选中项的value

var number=$("#number").combobox('getValue');

获取的是下拉框选中项的value值,不是显示的文字。

2,获取选中项的文字

var number=$("#number").combobox('getText');

3,指定选中某项

$("#number").combobox('setValue','somevalue')

$("#number").combobox('select','somevalue')

combobox('setValue')和combobox('select')的相同点:

1,都会触发onchange事件。

2,如果下拉框的value中存在'somevalue'这个值时,combobox下拉框会自动选中这个选项,否则会在文本框中显示该值,不选中任何选项。

combobox('setValue')和combobox('select')的不同:

combobox('setValue'),不会触发onselect事件。即使目标value存在且被下拉框选中也不会触发。

combobox('select'),会触发onselect事件,即使目标value不存在也会触发,此时onselect事件中的参数n为null。

4,清空选中项

$("#number").combobox('clear');

该方法只能清空选中项,不会影响下拉框选项列表。

5,清空下拉选项列表

$("#number").combobox('loadData', {});

该方法会清空下拉框的所有选项。loadData方法本身是用来加载静态下拉框选项的。

6,重新加载下拉选项

$("#number").combobox('reload');

还可以添加url参数,按照新的url参数来加载下拉选项:

$("#number").combobox('reload',url);

7,得到下拉框的下拉选项类

var opts = $("#type").combobox("options");

和combobox("getData")不同,combobox("options")得到的并不是下拉选项的列表,而是一个对象结构。

比如有这样的combobox:

那么:

var valueField = $("#type").combobox("options").valueField;

得到的是字符串"id"。不含引号。

var url = $("#type").combobox("options").url;

得到的则是字符串'getType.do'。不含引号。

8,得到下拉框的全部数据

var allData = $("#type").combobox("getData");

该方法得到的是一个数组,可以用allData.length得到数组长度。也可以通过for循环来遍历。

数组的每个元素都代表一个下拉选项。

比如有这样的combobox:

那么:

$("#type").combobox("getData")[0]['id'];

代表获取第一个下拉选项的value值。

注意:必须使用['id']的形式,笼统的使用[valueField]是错误的。

所以可以结合combobox("options")来达到统一的效果:

var field = $("#type").combobox("options").valueField;

var allData = $("#type").combobox("getData");

var value=allData[0][field];

以上代码中的value就是第一个下拉选项的value值。

9,onChange事件

onchange是combobox中的值发生变化时触发的事件。

这个发生变化包括在文本框中输入文字,还有点击下拉框中的其他选项。

当在文本框输入文字时,如果两次键入文字的时间间隔较小,该事件不会触发,稍一停顿则会触发,这个时间目测大概零点几秒。

onchange可以这样定义:

$("#type").combobox({

         onChange: function (n,o) {

         }

});

n代表新选择的下拉选项的value,或者在文本框中刚刚输入的文字。这取决于之前的值是选择下拉框选项而来还是在文本框中键入了文字。

o代表修改前的下拉选项的value,或者修改前在文本框中输入的文字。这取决于之前的值是选择下拉框选项而来还是在文本框中键入了文字。

 

10,onSelect事件

onselect是在combobox下拉框中更换下拉选项时触发的事件。

和onchange事件不同,在文本框中手动输入内容时不会触发onselect。

onselect可以这样定义:

$("#type").combobox({

         onSelect: function (n,o) {


         }

});

n代表新选择的下拉选项。

o代表选择前的下拉选项。

注意,和onChange不同,onSelect的n和o代表的是选择之前和选择之后的下拉选项,可以通过:

n.value

n.text

来获得选中项的value和文本内容

 

三,combobox的创建方式

EasyUI的combobox有以下几种创建方式:

1,元素中添加class="easyui-combobox"即可。

比如:

 

2,标签中添加class="easyui-combobox"参数,另外在         

注意,动态下拉选项加载完成后,之前预加载的所有下拉选项会消失。

 

3,元素+预定义JSON

标签中添加class="easyui-combobox"参数,另外在标签中添加data-options参数,并在参数值中设置data属性,data的值是JSON格式。

比如:

 

4,元素+动态加载下拉选项

标签中添加class="easyui-combobox"参数,另外在标签中添加data-options参数,并在参数值中设定url属性。

比如:

valueField:'id',表示url返回值中的id参数将被设置为下拉选项的value。

textField:'text',表示url返回值中的text参数将被设置为下拉选项的文本内容。

url,url是请求地址,可以返回JSON列表格式,也可以返回其他key-value形式的列表。

如果是java+spring的组合,可以返回List>格式,List中的每个Map代表一个下拉选项,Map.get("id")的值就是下拉选项的value的值,Map.get("text")的值就是下拉选项的文本。

建议使用org.springframework.web.bind.annotation.ResponseBody注解。

 

5,由jquery代码创建。

首先需要一个元素或

然后用如下代码创建combobox:

$('#type').combobox({

    url:'getType.do',

    valueField:'id',

    textField:'text'

});

实际上只要执行:

$('#type').combobox({});

就可以把元素或