基于 EHT Form 组件的实现

EHT 开发框架中,Form 组件主要是为了操作表单数据的组件,通过 Eht Form 组件,可以监听表单数据是否有更新,并将数据存放在Form 类的 data 中,这样,在调用数据的时候,自己可以使用 Form 类 data 属性,简化了表单 Form 的数据获取功能,同时通过 Form 类,可以将表单中具有下拉选择(数据参照的)动态的形成参照UI,并做了细节方面的验证。

EHT 开发框架:

EHT快速开发及集成应用平台框架,是针对软件开发人员的快速开发框架,该框架封装了满足用户各种需求的相关API函数及UI组件, 通过掌握EHT快速开发框架,可以很轻松的完成各种需求的开发,节约了开发成本缩短了开发周期,并且,通过EHT框架所封装的API, 可以大量避免潜在的bug问题,完全实现了采用30%的代码来完成100%的功能。 

EHT开发框架特点:

  1. 基于SOA架构体系
  2. 学习成本低廉,有点懂java、javascript、html脚本的人员,就能很轻松的掌握开发框架,并完成需求开发任务。
  3. 通过EHT快速开发平台框架,可以轻松完成开发任务,并且避免了不必要bug问题。
  4. 简单的业务需求开发,甚至不需要写后台的一行java代码,只通过调取EHT封装的UI组件及框架远程调用的API便能轻松完成业务需求。
  5. 框架开发规范简单,易读易懂。
  6. 开发框架支持多数据库,能很轻松的进行数据库转换,不需要修改业务代码。
  7. 开发框架在性能上做了很多工作,优化api算法,最大程度上提升系统性能。
  8. 快速开发框架提供了辅助的开发工具,可以直接将 powerdesigner所设计的pdm文件转换成开发框架的模型配置文件及模型文件,提高了开发效率
Form 组件的实现(基于JQuery)实现,代码如下:具体运行代码见( http://demo.ehtsoft.com/   内涵代码及框架下载地址)

/**
 * 表单处理类
 * @param options
 * @returns {Eht.Form}
 */
Eht.Form=function(options){
var form = this;
this.data = new Object();
var defaults = {selector:null,
disable:false,
opstatusField:"op_status",//modify 修改,new 新建
dataclone:true,//数据是否克隆,克隆返回的数据时另外的一个数据对象,不同于参数的 data 数据
data:null,
codeDefaultField:"default"
};
this.options = $.extend(defaults,options);
if(this.options.data!=null){
if(this.options.dataclone==false){
this.data = this.options.data;
}else{
for(p in this.options.data){
this.data[p] = this.options.data[p];
}
}
}
$(this.options.selector).find("input,select,textarea").each(function(){
if($(this).attr("name") && Eht.toLowerCase($(this).attr("type"))!="button" && Eht.toLowerCase($(this).attr("type"))!="image"){
form.initCodes($(this));

if(form.data[$(this).attr("name")]!=undefined && form.data[$(this).attr("name")]!=null){
$(this).val(form.data[$(this).attr("name")]+"");
}
form.data[$(this).attr("name")]=$(this).val();

// change 事件
$(this).change(function(){
form.data[$(this).attr("name")]=$(this).val();
if(form.data[form.options.opstatusField]!="new"){
form.data[form.options.opstatusField]="modify";
}
});
}
});
if(this.options.disable==true){
this.disable();
}else{
this.enable();
}
};
Eht.Form.prototype.initCodes = function(curcomp){
var form = this;
var attrs=["id","name","class","style","codes"];
if(curcomp.attr("codes")){
var  reg = /\[.*?\]/g;
if(reg.test(curcomp.attr("codes"))){
var arr = eval("("+curcomp.attr("codes")+")");
if(curcomp.get(0).tagName=="SELECT"){
selectoption(curcomp,arr);
}else{
var select = $("<select>");
for(var i=0;i<attrs.length;i++){
if(curcomp.attr(attrs[i])){
select.attr(attrs[i],curcomp.attr(attrs[i]));
}
}
curcomp.replaceWith(select);
selectoption(select,arr);
}
}else{

}
}
function selectoption(curcomp,arr){
for(var i=0;i<arr.length;i++){
var option = $('<option value="'+arr[i].value+'">'+arr[i].label+'</option>');
if(arr[i][form.options.codeDefaultField]=="true" || arr[i][form.options.codeDefaultField]==true){
option.attr("selected",true);
}
curcomp.append(option);
}
}
};
/**
 * 像表单填充数据
 * @param data
 */
Eht.Form.prototype.fill = function(data){
this.clear();
var form = this;
if(data!=null){
if(this.options.dataclone==false){
this.data = data;
}else{
for(p in data){
this.data[p] = data[p];
}
}
}
$(this.options.selector).find("input,select,textarea").each(function(){
if($(this).attr("name") && Eht.toLowerCase($(this).attr("type"))!="button" && Eht.toLowerCase($(this).attr("type"))!="image"){
if(form.data[$(this).attr("name")]!=undefined && form.data[$(this).attr("name")]!=null){
$(this).val(form.data[$(this).attr("name")]+"");
}
}
}); 
};
/**
 * 清空表单
 * @param properties 参数中的属性不清楚,用 "," 分割  如:  "name,orgid"
 */
Eht.Form.prototype.clear=function(properties){
var data = this.data;
var keeps = new Object();
if(properties){
for(var i=0;i<properties.split(",").length;i++){
keeps[properties.split(",")[i]]=true;
}
}
for(p in this.data){
if(!keeps[p]){
delete this.data[p];
}
}
$(this.options.selector).find("input,select,textarea").each(function(){
if($(this).attr("name") && Eht.toLowerCase($(this).attr("type"))!="button" && Eht.toLowerCase($(this).attr("type"))!="image"){
if(!keeps[$(this).attr("name")]){
if($(this).get(0).tagName=="SELECT"){
$(this).get(0).selectedIndex=0;
data[$(this).attr("name")]=$(this).val();
}else{
$(this).val("");
}
}
}
});
};
Eht.Form.prototype.enable=function(){
$(this.options.selector).find("input,select,textarea").each(function(){
if($(this).attr("name") && Eht.toLowerCase($(this).attr("type"))!="button" && Eht.toLowerCase($(this).attr("type"))!="image"){
$(this).attr("disabled",false);
}
}); 
};
Eht.Form.prototype.disable=function(){
$(this.options.selector).find("input,select,textarea").each(function(){
if($(this).attr("name") && Eht.toLowerCase($(this).attr("type"))!="button" && Eht.toLowerCase($(this).attr("type"))!="image"){
$(this).attr("disabled",true);
}
}); 
};
/**
 * 表单验证
 */
Eht.Form.prototype.validate=function(){

return true;
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值