功能描述

easyui 中  combobox 多选赋值方法如下:

$('#cbx').combobox('setValues', ['01','02'])

然而,业务中是以  “01,02” 的形式存储,并且 combobox 较多,为防止业务数据冗余,影响后期维护,现对 form 进行扩展 myLoad,实现 combobox 在多选(multiple = true)情况下,可以用字符串自动赋值 combobox 的操作,并且不影响 load 原有的功能,比如 "01,02" 可以直接赋值给 combobox。

代码

$.extend($.fn.form.methods, {
myLoad: function (jq, param) {
return jq.each(function () {
load(this, param);
}); function load(target, data) {
if (!$.data(target, "form")) {
$.data(target, "form", {
options: $.extend({},
$.fn.form.defaults)
});
}
var options = $.data(target, "form").options;
if (typeof data == "string") {
var param = {};
if (options.onBeforeLoad.call(target, param) == false) {
return;
}
$.ajax({
url: data,
data: param,
dataType: "json",
success: function (data) {
_load2(data);
},
error: function () {
options.onLoadError.apply(target, arguments);
}
});
} else {
_load2(data);
}
function _load2(data) {
var form = $(target);
for (var name in data) {
var val = data[name];
var rr = setChecked(name, val);
if (!rr.length) {
var f = form.find("input[numberboxName=\"" + name + "\"]");
if (f.length) {
f.numberbox("setValue", val);
} else {
$("input[name=\"" + name + "\"]", form).val(val);
$("textarea[name=\"" + name + "\"]", form).val(val);
$("select[name=\"" + name + "\"]", form).val(val);
}
}
setValue(name, val);
}
options.onLoadSuccess.call(target, data);
_validate(target);
};
//设置选中
function setChecked(name, val) {
var form = $(target);
var rr = $("input[name=\"" + name + "\"][type=radio], input[name=\"" + name + "\"][type=checkbox]", form);
$.fn.prop ? rr.prop("checked", false) : rr.attr("checked", false);
rr.each(function () {
var f = $(this);
if (f.val() == String(val)) {
$.fn.prop ? f.prop("checked", true) : f.attr("checked", true);
}
});
return rr;
};
//设置值
function setValue(name, val) {
var form = $(target);
var types = ["combotree", "combogrid", "datetimebox", "datebox"];
var comboboxTypes = ["combobox", "combo"];
var c = form.find("[comboName=\"" + name + "\"]");
if (c.length) {
for (var i = 0; i < types.length; i++) {
var type = types[i];
if (c.hasClass(type + "-f")) {
if (c[type]("options").multiple) {
c[type]("setValues", val);
} else {
c[type]("setValue", val);
}
return;
}
}
for (var i = 0; i < comboboxTypes.length; i++) {
var comboboxType = comboboxTypes[i];
if (c.hasClass(comboboxType + "-f")) {
if (c[comboboxType]("options").multiple) {
if (val != null) {
var valArray = val.split(",")
c[comboboxType]("setValues", valArray);
} } else {
c[comboboxType]("setValue", val);
}
return;
}
}
}
};
};
}
}); //表单字段验证,当所有字段都有效的时候返回true。
function _validate(target) {
if ($.fn.validatebox) {
var t = $(target);
t.find(".validatebox-text:not(:disabled)").validatebox("validate");
var valid = t.find(".validatebox-invalid");
valid.filter(":not(:disabled):first").focus();
return valid.length == 0;
}
return true;
};

  

easyui 对form扩展的更多相关文章

  1. 基于easyui的webform扩展(续)

    基于easyui的webform扩展(续) 回顾 <前端基于easyui的mvc扩展>.<前端基于easyui的mvc扩展(续)>.<基于easyui的webform扩展 ...

  2. 基于easyui的webform扩展

    基于easyui的webform扩展 回顾 <前端基于easyui的mvc扩展>.<前端基于easyui的mvc扩展(续)>前两篇介绍了mvc内如何基于easyui进行扩展,在 ...

  3. 前端基于easyui的mvc扩展(续)

    前端基于easyui的mvc扩展(续) 回顾及遗留问题 上一篇讲解了基于easyui的mvc扩展的基本实现,已经降低了在mvc内使用easyui的难度,但是仍然还有一些问题: 当我们要给生成的控件设置 ...

  4. 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象

    之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...

  5. EasyUI之Form load函数IE8下设置Radio或Checkbox的BUG

    EasyUI的form的load函数很好用,表单赋值就靠它了,简单方便.我们可以指定url以Ajax加载,如: 1: $('#ff').form('load', 'ajax/common') JSON ...

  6. 基于easyui的验证扩展

    基于easyui的验证扩展 ##前言 自己做项目也有好几年的时间了,一直没有时间整理自己的代码,趁春节比较闲,把自己以前的代码整理了一篇.这是基于easyui1.2.6的一些验证扩展,2012年就开始 ...

  7. 雷林鹏分享:jQuery EasyUI 数据网格 - 扩展编辑器

    jQuery EasyUI 数据网格 - 扩展编辑器 一些常见的编辑器(editor)添加到数据网格(datagrid),以便用户编辑数据. 所有的编辑器(editor)都定义在 $.fn.datag ...

  8. 第二百二十一节,jQuery EasyUI,Form(表单)组件

    jQuery EasyUI,Form(表单)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Form(表单)组件的使用方法,这个组件不依赖于 ...

  9. 使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象

    之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...

随机推荐

  1. Java学习-jsp内置对象Session

  2. Java基础教程(21)--泛型

    一.为什么使用泛型   泛型意味着编写的代码可以被很多不同类型的对象所重用.例如,我们不希望为存放String和Integer对象的集合设计不同的类.现在的ArrayList类可以存放任何类型的对象, ...

  3. JSONArray排序[收藏]

    问题 JSONArray中嵌套JSONObject, 对JSONArray进行排序 排序前: [{"id":1,"name":"ljw"}, ...

  4. oracle数据库逐步学习总结【基础二】

    原创作品,转载请在文字开头明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10067872.html 接着上一篇,继续总结! 五.oracle表管理 首 ...

  5. Java - String, Stringbuilder, StringBuffer比较

    http://www.cnblogs.com/zuoxiaolong/p/lang1.html

  6. Dubbo安装及其实战1

    一.Dubbo安装 (1)安装zk和tomcat yum 安装tomcat 默认路径为 /usr/share/tomcat zookeeper 我这里采用的是使用zookeeper管理的.所以要安装z ...

  7. python中类的约束和限制对象添加属性

    通过__slots__限制对象可添加的属性 class A: __slots__ = ['a', 'b'] pass a1 = A() a1.a = 10 print(a1.a) a1.c = 0 # ...

  8. charles 抓包 https 证书

    1. 概述 环境:这里是windows8 和 android (参考了ios环境的博客) 手机app点击发出http及https的请求,之前抓包都有请求的相关内容展示,这次没有,原来之前的一直抓的是h ...

  9. LNMP笔记:阿里云32位 CentOS 5.4 配置 LNMP环境

    最近比较郁闷的是 WordPress大学 服务器故障,由于诸多原因没及时处理,导致10多天无法访问.倡萌也是刚接触服务器环境配置,维护的确力不从心,没办法排查出错误根源,所以只好重置系统盘,重新配置L ...

  10. PHP链接mysql 出现:由于目标计算机积极拒绝,无法连接

    1.PHP链接mysql 出现:由于目标计算机积极拒绝,无法连接 2.原因是mysql服务没有启动,图标呈现红色 3.启动服务即可,打开cmd,输入net start mysql即可 4.启动后,图标 ...