/** * @author herong * 单记录组件 */ var CFWGt = _FW.fCreateClass(); /** * 单记录组件API */ CFWGt.prototype = { /** * 初始化 * */ fInitialize : function(options) { }, /** * 事件注册,对回调函数中的参数进行包装.然后执行回调函数. * 只供框架内部使用 * @param obj 单记录表字段 * @param eventName 事件名称 * @param func 回调函数 */ _fnc : function(obj, eventName, func,param) { var data={}; var objClass = $(obj).attr('class'); var id = $(obj).parents('table.datatable').attr('id'); data['ID'] = id; if(objClass == 'fwcombox-text' || objClass == 'fwcombox-arrow fwcombox-arrow-hover'){ data['PNAME'] = $(obj).parent('span.fwcombox').prev('select').attr('name'); data['VALUE'] = $(obj).parent('span.fwcombox').attr('selectValue').value; data['TEXT'] = $(obj).value; data['LABEL'] = $(obj).parent('span.fwcombox').parent('td.tdinput').prev('td.tdprompt').text(); } //select(span) else if(objClass == 'fwcombox'){ data['PNAME'] = $(obj).prev('select').attr('name'); data['VALUE'] = $(obj).attr('selectValue').value; data['LABEL'] = $(obj).parent('td.tdinput').prev('td.tdprompt').text(); } //05Q控件 else if(objClass == 'searchgridbox'){ data['PNAME'] = obj.name; data['VALUE'] = $.data(obj, 'searchgrid').selectedRows; data['LABEL'] = $(obj).parent('td.tdinput').prev('td').text(); } //05类型 else if(obj.tagName=="SELECT"){ data['PNAME'] = obj.name; data['VALUE'] = obj.value; data['TEXT'] = $(obj).parent().find(".fwcombox-text").val(); data['LABEL'] = $(obj).parent('td.tdinput').prev('td').text(); } else{ data['PNAME'] = obj.name; data['VALUE'] = obj.value; data['LABEL'] = $(obj).parent('td.tdinput').prev('td.tdprompt').text(); } if (func) { func.call(this,data,param); //执行回调函数 } //func(data); 执行回调函数 }, /** * 设置事件 * 只供框架内部使用 * @param eventName 事件名称 * @param Obj 监听的控件 * @param func 回调函数 * @param orgEName 原控件 * @returns {Boolean} 注册成功标志 */ _setEvent : function(eventName, Obj, func,preObj,param) { //回车事件 if(eventName=="enter"){ $(Obj).bind("keydown", function() { if(event.keyCode==13){ CFW.oGt._fnc(preObj, eventName, func,param); } }); return true; } //绑定事件 其他事件 $(Obj).bind(eventName, function() { CFW.oGt._fnc(preObj, eventName, func,param); }); return true; }, _setEventDateTimeNEW : function(eventName, Obj, func,preObj,param) { //回车事件 if(eventName=="enter"){ $(Obj).bind("keydown", function() { if(event.keyCode==13){ CFW.oGt._fnc(preObj, eventName, func,param); } }); return true; } //绑定事件 其他事件 if(eventName=="change"){ jQuery(Obj).unbind("click").bind('click',function(event){ WdatePicker({onpicking:function(){func();}}) ; }); return true; } $(Obj).bind(eventName, function() { CFW.oGt._fnc(preObj, eventName, func,param); }); return true; }, /** * 单击后触发 * @param sTabId gt页面id *
* 使用举例: * CFW.oGt.doClick(sTabId, parArr, func); **/ doClick: function(sTabId, parArr, func,param){ if(!this._fnCheckEventParam(sTabId, parArr, func,"doClick")){ return false; } for ( var i = 0; i < parArr.length; i++) { var itemName = parArr[i]; var objs = $("#" + sTabId).find("[name='" + itemName + "']"); var obj = null; if (objs.length == 0) { CFW.oWin.fnAlert("找不到名称为" + itemName + "的对象,请检查相关的程序!"); break; //找不到当前字段, 继续为下一个字段注册事件 } for ( var oi = 0; oi < objs.length; oi++) { obj=objs[oi]; //05Q控件 if($(obj).attr("class") == 'searchgridbox'){ obj=$(obj).next("input.searchgrid-text"); } //05类型 if(obj.tagName=="SELECT"){ obj=$(obj).next("span").children("input.fwcombox-text"); } this._setEvent("click", obj, func,objs[oi],param); } } return true; }, /** * 触发单记录表绑定函数 * @param sTabId gt页面id * @param sOper 操作类型 *
* 使用举例: * CFW.oGt.doClick(sTabId, sOper); **/ fnDoAction: function(sTabId,sOper,callback){ var mParam=eval('_gt_'+sTabId+'_getParam()');//获取单记录表参数 var sActionType=mParam.actionType; var sActionID=mParam.actionID; var options = {}; var obj = $("#" + sTabId); //获取单记录表单的数据 jQuery(':input',obj).each(function(){ if(this.name==null|| this.name==''||this.name=='_multiple'){ return true; } options[this.name] = this.value; }); if(!CFW.oValid.fnIsNull(sActionType) && !CFW.oValid.fnIsNull(sActionID)){ if(sActionType=='SERVICE'){ CFW.oAJax.doService(sActionID, options, "调用Service ", function(mData) { //调用成功后返回数据 if (typeof (callback) == 'function'){ try{ callback(mData); }catch(ex){ CFW.oWin.fnAlert(ex.message); } } } ); }else if(sActionType=='PROCEDURE'){ CFW.oAJax.doProc(sActionID, options, "调用过程 ", function(mData) { //调用成功后返回数据 if (typeof (callback) == 'function'){ try{ callback(mData); }catch(ex){ CFW.oWin.fnAlert(ex.message); } } } ); }else if(sActionType=='MAPPER'){ if(CFW.oValid.fnIsNull(sOper)){ alert('调用mapper的操作类型参数不对,请核实!'); return; } var aMappers=sActionID.split('|'); var sMapperid=''; for (var j=0;j
*使用方法举例:
* 使用方法1: CFW.oGt.fnCheckAll('aform');
*
*/
fnCheckAll : function(oOpform, sChkName){
var obj =eval('document.' + oOpform);
if(!sChkName){
$(':checkbox',obj).each(function(){
if (!this.disabled) {
this.checked=true;
}
});
}
else{
$(':checkbox[name="'+sChkName+'"]',obj).each(function(){
if (!this.disabled) {
this.checked=true;
}
});
}
},
/**
*功能简述: 设置复选框(checkbox)控件为选中状态。
*功能详细说明:将指定单记录表单中的部分(或者所有)的复选框设置为选中状态。
*例如:将JSP页面上aform表单内的所有的checkbox复选框选中,可以参考使用方法1,
*只需要设置某个复选框为选中状态时,则需要在使用方法1中加入第二个参数,即:checkbox名称。
*@param oOpform(必需) :单记录表单name属性的值,即:form的名称
*@param sChkName :复选框名称(可选),如果不提供这个参数,将选中状表单中所有多选框。
*
*使用方法举例:
* 使用方法1: CFW.oGt.fnUnCheckAll('aform');
*
*/
fnUnCheckAll : function(oOpform, sChkName){
var obj = eval('document.' + oOpform);
if(!sChkName){
$(':checkbox',obj).each(function(){
if (!this.disabled) {
this.checked=false;
}
});
}
else{
$(':checkbox[name="'+sChkName+'"]',obj).each(function(){
if (!this.disabled) {
this.checked=false;
}
});
}
},
/**
*功能简述:撤销掉控件的只读属性
*功能详细说明:主要用于撤销jsp页面上某个控件只读属性,例如:设置某个文本录入框可以编辑,
*可以录入数据。或者设置checkbox可编辑,即:多选框可以选中或者取消选中操作。
* @param oObj(必需):控件名 类型:object,如:document.aform.XB。
*
*使用方法举例:
* 使用方法1: CFW.oGt.fnReObjReadOnly(document.aform.XB);
*
*/
fnReObjReadOnly : function(oObj){
var ele = oObj;
var qObj = $(oObj);
if(qObj.hasClass('searchgridbox')){
qObj.searchgrid('disabled',false);
oObj.readOnly = false;
}else if($.data(ele, 'fwcombox')!=null){
qObj.fwcombox('disabled',false);
}else if (oObj.type == 'checkbox' ||oObj.type == 'radio'){
this._enablePrimitiveInput(oObj);
}else{
this._enablePrimitiveInput(oObj);
}
},
/**
*功能简述:设置控件的只读属性
*功能详细说明:主要用于设置jsp页面上某个控件只读属性,例如:设置某个文本录入框不可以编辑,
*可以录入数据。或者设置checkbox不可编辑,即:多选框不可以进行选中或者取消选中操作。
* @param oObj(必需): 控件对象称 类型:object,如:document.aform.XB。
*
*使用方法举例:
* 使用方法1: CFW.oGt.fnToDisabledObj(document.aform.XB);
*
*/
fnToDisabledObj : function(oObj){
var qObj = $(oObj);
if(qObj.hasClass('searchgridbox')){
qObj.searchgrid('disabled',true);
}else if($.data(oObj, 'fwcombox')!=null){
qObj.fwcombox('disabled',true);
$(oObj).attr("readOnly",true);
}else{
this._disablePrimitiveInput(oObj);
}
},
/**
*功能简述:置输入框为不可编辑状态
*@param theForm : 必须,FORM 名字 string 如:'aform'
*@param fields : 可选,FORM 中的输入框名字 string 如:'GMSFHM',有多个的写法:['XM','GMSFHM']
*@param iFlag : 可选,-1 表示,除了指定的fields之外
*
*使用方法举例:
* CFW.oGt.fnToDisabled(aform);
* CFW.oGt.fnToDisabled(aform,['XM','GMSFHM']);
*
*/
fnToDisabled : function(theForm,fields,flag){
var that = this;
if (typeof theForm == 'string') {
theForm = eval("document."+theForm+"");
}
if(fields == null || fields == ''){
var tagObjs = theForm.elements;
for(var i=0,j=0; i
*使用方法举例:
* CFW.oGt.fnReReadOnly(aform);
* CFW.oGt.fnReReadOnly(aform,['XM','GMSFHM']);
*
*/
fnReReadOnly : function(theForm,fields,flag){
var that = this;
if (typeof theForm == 'string') {
theForm = eval("document."+theForm+"");
}
if(fields == null || fields == ''){
var tagObjs = theForm.elements;
for(var i=0,j=0; i
*使用方法举例:
* CFW.oGt.fnToDisabledTable('gentbl_q');
*
*/
fnToDisabledTable : function(sGtId){
var that = this;
jQuery('#'+sGtId+' :input').each(function(){
that.fnToDisabledObj(this);
});
jQuery('#'+sGtId+' a[class^=buttonlink]').each(function(){
$(this).linkbutton('disable');
});
},
/**
*功能简述:撤销掉单记录表内所有对象的只读属性
*@param sGtId : 必须,单记录表id
*
*使用方法举例:
* CFW.oGt.fnReTableReadOnly('gentbl_q');
*
*/
fnReTableReadOnly : function(sGtId){
var that = this;
jQuery('#'+sGtId+' :input').each(function(){
that.fnReObjReadOnly(this);
});
jQuery('#'+sGtId+' a[class^=buttonlink]').each(function(){
$(this).linkbutton('enable');
});
},
/**
*功能简述:为下拉框设置值
*功能详细说明:框架对下拉框进行封装,在JS脚本中为下拉框赋值,下拉框出现没有赋值情况,
*因此需要调用此函数来为下拉框赋值。例如:设置CAR581下拉框框值为“建设银行”时,则可参考
*使用方法1
* @param oCombox(必需):控件名称 类型:object,如:document.aform.XB。
* @param sVal(必需): 下拉设置值 类型:string|int
*
*使用方法举例:
* 使用方法1: CFW.oGt.fnSetCombVal(formYhxx.CAE581,'建设银行');
*
*/
fnSetCombVal : function(oCombox, sVal){
if(jQuery(oCombox).attr("tagName")=="SELECT"){
//尚未初始化就直接赋值
if(jQuery.data(oCombox, 'fwcombox')!=null){
var opts = jQuery.data(oCombox, 'fwcombox').options;
var oldVal = oCombox.value;
opts.setValue(oCombox,sVal);
if(sVal!=oldVal){
$(oCombox).trigger('change');
}
}
else{
oCombox.value = sVal;
}
}
else if($(oCombox).hasClass('searchgridbox')){
$(oCombox).searchgrid('setTextById',sVal);
}
},
/**
* 功能简述:获取下拉框文本.
* 功能详细说明:获取下拉框中字典项值对应的字典文本。例如:获取XB字段文本值时,可参考
* 使用方法,当有XB字段已选定了某个字典值时,才会获取到其字典项的文本值。
* @parm oObj(必需):控件对象 类型:object,如:aform.XB。
* @return sVar 返回字典文本值 类型: string
*
* 使用方法举例:
* 使用方法1:
* CFW.oGt.fnGetComText(aform.XB);
*
*/
fnGetComText : function(oObj){
var value = oObj.value;
var sVar = "";
$('>option', oObj).each(function(){
var v = $(this).attr('value');
if(v == value){
sVar = $(this).html();
return null;
}
});
return sVar;
},
/**
* 功能简述:重新设置框架控件大小。
* 功能详细说明:处理控件重新布局(调整控件大小和位置,如果原先控件是隐藏的,
* 那么可能需要手动调用*来重新调整)。 需要布局的,手动调用这个,传入父级dom,
* 比如外层div,或者form,封装fwwindow控件的div无需手动调用。
* @param oParentObj(必需) 网页任意节点对象。
*
* 使用方法举例:
* 使用方法1: //有个div,id为testDiv,div里面有个单记录表,
* div显示的时候需要重画单记录里面的控件,那么在js中可以这样:
* CFW.oGt.fnResizeFWObj(testDiv){};
*
*
*/
fnResizeFWObj : function(oParentObj){
//查找节点对象里面的所有需要重新调整的节点
$('.fwresize',oParentObj).trigger('fwresize');
},
/**
* 功能简述:设置控件获取焦点
* 功能详细说明:JSP页面中,需要设置某个控件获取焦点时,则可用此方法设置该控件获取焦点,
* 则光标定位到该控件上,可以对控件进行操作。
* @param oObj(必需):控件对象 类型:object,如:aform.XB。
*
* 使用方法举例:
* 使用方法:
* 方法1:CFW.oGt.fnSetFocus(djspForm.AAC002);
*
*/
fnSetFocus : function(oObj){
var input;
var tmpObj = $(oObj);
var textLen = 0;
if(!tmpObj.hasClass('buttonlink')){
if(jQuery.data(oObj,"fwcombox")!=null){
var span = jQuery.data(oObj,'fwcombox').fwcombox;
input = span.find('input.fwcombox-text');
}
else{
input = tmpObj;
}
input.focus() ; //获取焦点
try{
textLen = input.val().length ;//获取当前文字对象长度
}
catch(e){
textLen=0;
}
var rng = document.selection.createRange(); //获取焦点区域
rng.moveStart("character",textLen) ;//向后移动指定长度
rng.select();
}
else{
input = $(oObj);
input.focus() ; //获取焦点
}
},
/**
* 功能简述:判断比例是否在0至100范围内,并自动四舍五入保留小数后两位
* 功能详细说明:JSP页面中,某个文本框需要录入比例数据时,则可以调用此方法,用以判断
* 录入的比例数据在0-100范围内,加强对比例数据的检验。同时,此方法会四舍五入保留小数
* 后两位。
* @param oObj(必需):控件对象 类型:object,如:aform.BLZD。
*
* 使用方法举例:
* 使用方法:
* 方法1:CFW.oGt.fnBlpd(aform.BLZD);
*
*/
fnBlpd : function(oObj){
/*取数值*/
var val = oObj.value;
if(val != null && (val > 100 || val < 0)){
oObj.value='';
CFW.oWin.fnAlert("比例必需在0至100范围内");
setTimeout(function(){oObj.focus();},0);
}
/*自动四舍五入保留小数后两位*/
else{
var valNew = Math.round(val*100)/100;
oObj.value = valNew;
}
},
/**
* 功能简述:设置按钮的可用或只读控制
* 功能详细说明:主要用于设置JSP页面上按钮的可否操作,以控件用户对界面上控件的操作。
* 如用户录入数据后,保存按钮才可操作等情境下,可以调任此方法对按钮进行可否操作的控制。
* @param sBtn必需):单按钮的NAME或是存放多个按钮名称的数组
* @param bStatus(必需):固定值:true 或是 false
*
* 使用方法举例:
* 使用方法1:设置按钮name="btnQuery" 和 name="btnCls" 只读
* var arrBtn = new Array('btn','btn2');
* CFW.oGt.fnBtnStatus(arrBtn,false);
* 使用方法2:设置按钮name="btnQuery" 可用
* CFW.oGt.fnBtnStatus('btnQuery',true);
*
*/
fnBtnStatus : function(sBtn, bStatus){
//判断是否为数组
if(typeof sBtn == 'object' && typeof sBtn.sort == 'function' && typeof sBtn.length == 'number'){
for(var i=0; i
* 使用方法举例:
* 使用方法1:
* CFW.oGt.fnClear('aform');没有提示,全清空
* CFW.oGt.fnClear('aform', 'AAC001');没有提示,清AAC001
* CFW.oGt.fnClear('aform', 'AAC001', '-1');没有提示,清非AAC001
* CFW.oGt.fnClear('aform', 'AAC001', '-1', true);有提示,清非AAC001
*
*/
fnClear : function(sFormName, fields, flag, isTip){
if(typeof sFormName !="object"){
sFormName = eval("document."+ sFormName + "");
//eval("sFormName = document."+ sFormName + ";");
}
if (isTip) {
//清除表单前先提示
var confFlag = window.confirm("您确定要清除表单吗?");
if (!confFlag){
return confFlag;
}
}
if(fields == null || fields == ''){//fields是空
var tagObjs = sFormName.elements;
for(var i=0,j=0; i
* 使用方法举例:
* if(!CFW.oGt.fnValidateForm(form_cxtj)){
* return false;
* }; //检验form_cxtj表单中必录项是否为空,为空则给以提示不执行相应的方法,
* //如果录入数据合法,则执行相应的方法。
*
*/
fnValidateForm : function(dform, options){
var notnullStr = '';
var notnullArr = [];
var numberStr = '';
var numberArr = [];
var numberAgeStr = '';
var numberAgeArr = [];
var numberAgeLawMaleStr = '';
var numberAgeLawMaleArr = [];
var numberAgeLawFemaleStr = '';
var numberAgeLawFemaleArr = [];
var numberHeightStr = '';
var numberHeightArr = [];
var numberWeightStr = '';
var numberWeightArr = [];
var postcodeStr = '';
var postcodeArr = [];
var dateStr = '';
var dateArr = [];
var mailStr = '';
var mailArr = [];
var dateLongStr = '';
var dateLongArr = [];
var dateShortStr = '';
var dateShortArr = [];
var dateCloseStr = '';
var dateCloseArr = [];
var dateTimeStr = '';
var dateTimeArr = [];
var floatStr = '';
var floatArr = [];
var floatSightStr = '';
var floatSightArr = [];
var bitLStr ='';
var bitLArr = [];
var telLStr ='';
var telLArr = [];
var colorStr ='';
var colorArr = [];
var sfzStr ='';
var sfzArr = [];
var chineseStr = '';
var chineseArr = [];
var notHasChineseStr = '';
var notHasChineseArr = [];
var basicCondiction ={length:0};
theForm = dform;
//检查不安全的字符串
for (i = 0; i < theForm.elements.length; i ++){//遍历form中的字段
var isInvalide=false;
ele = theForm.elements[i];
if(null != ele.value){
//控件是否进行安全过滤,默认是
var valueValidate=$(ele).attr("valueValidate");
if(valueValidate==""){
valueValidate="true";
}
//控件类型是否进行安全过滤,只对文本输入框校验
var typeValidate = "";
if($(ele).hasClass('textbox')||$(ele).hasClass('textareabox')){
typeValidate="true";
}
if((valueValidate=="true")&&(typeValidate=="true")){
for(var unsafei=0;unsafei0&&s.length!=6){
postcodeArr.push(ele);
}
}
//证件类型
if($(ele).hasClass('combobox')){
ele.className = ele.className.replace(/valueInvalide/,'');
if(ele.cn!=null){
if(ele.value=='6'){//证件类型为身份证
var zjhm;
zjhm= eval(theForm.name+'.'+ele.cn);
zjhm.className = ele.className.replace(/valueInvalide/,'');
if(zjhm.value!=''){
if(!CFW.oValid._fnFWidcardCheck(zjhm.value)){
sfzStr = sfzStr + '\n' + CFW.oValid._IDCARD_MSG;
sfzArr.push(zjhm);
jQuery(zjhm).addClass('valueInvalide');
}
}
}//=6
}//ele.cn!=null
}//combobox
var sVldstr=$(ele).attr('vldStr');
if(sVldstr==null){
continue;
}else if(sVldstr==''){
continue;
}
colName = theForm.elements[i].name;//字段的名称
validStrs = sVldstr;
name_validStrs = validStrs.split('=');//得到字段的中文名称
if (name_validStrs.length == 2){
colName = name_validStrs[0];
validStrs = name_validStrs[1];
pint=parseInt(theForm.elements[i].value);
pfloat=parseFloat(theForm.elements[i].value);
}
tmpArray = validStrs.split('+');
for (j = 0; j < tmpArray.length; j ++){//检查该字段的校验类型
if (tmpArray[j] == 'nn' ){
if(CFW.oValid.fnIsNull(theForm.elements[i].value)){
//有非空却为空的字段
notnullStr = notnullStr + '\n' + colName;
notnullArr.push(theForm.elements[i]);
//属于封装过的下拉框
var eleName = theForm.elements[i].className;
if(eleName.indexOf('combobox')!=-1 ||eleName.indexOf('incombox')!=-1
||eleName.indexOf('dbcombox')!=-1||eleName.indexOf('zjcombox')!= -1){
try{
var span = jQuery.data(theForm.elements[i], 'fwcombox').fwcombox;
var input = jQuery('.fwcombox-text',span);
input.addClass('valueInvalide');
isInvalide=true;
}catch(e){
jQuery(theForm.elements[i]).addClass('valueInvalide');
}
}else{
//加入底框的颜色
jQuery(theForm.elements[i]).addClass('valueInvalide');
}
}else{
//取消valueInvalide标志
//属于封装过的下拉框
var eleName = theForm.elements[i].className;
if(eleName.indexOf('combobox')!=-1 ||eleName.indexOf('incombox')!=-1
||eleName.indexOf('dbcombox')!=-1||eleName.indexOf('zjcombox')!= -1){
try{
var span = jQuery.data(theForm.elements[i], 'fwcombox').fwcombox;
var input = jQuery('.fwcombox-text',span);
input.removeClass('valueInvalide');
}catch(e){
jQuery(theForm.elements[i]).removeClass('valueInvalide');
}
}else{
//加入底框的颜色
jQuery(theForm.elements[i]).removeClass('valueInvalide');
}
}
}else if(tmpArray[j] == 'n' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid.fnIsInteger(theForm.elements[i].value)){//有不合法的数字型字段
numberStr = numberStr + '\n' + colName;
numberArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 'h' && !CFW.oValid.fnIsNull(theForm.elements[i].value)){//有不合法的身高型字段
if(CFW.oValid.fnIsInteger(theForm.elements[i].value) && (pint>0) && (pint<300)){
}else{
numberHeightStr = numberHeightStr + '\n' + colName;
numberHeightArr.push(theForm.elements[i]);
}
}else if(tmpArray[j] == 'w' && !CFW.oValid.fnIsNull(theForm.elements[i].value)){//有不合法的体重型字段
if(CFW.oValid.fnIsInteger(theForm.elements[i].value) && (pint>0) && (pint<200)){
}else{
numberWeightStr = numberWeightStr + '\n' + colName;
numberWeightArr.push(theForm.elements[i]);
}
}else if(tmpArray[j] == 'a' && !CFW.oValid.fnIsNull(theForm.elements[i].value)){//有不合法的年龄型字段
if(CFW.oValid.fnIsInteger(theForm.elements[i].value) && (pint>0) && (pint<200)){
}else{
numberAgeStr = numberAgeStr + '\n' + colName;
numberAgeArr.push(theForm.elements[i]);
}
}else if(tmpArray[j] == 'alm' && !CFW.oValid.fnIsNull(theForm.elements[i].value)){//有不合法的法定男性年龄型字段
if(CFW.oValid.fnIsInteger(theForm.elements[i].value) && (pint>=16) && (pint<=60)){
}else{
numberAgeLawMaleStr = numberAgeLawMaleStr + '\n' + colName;
numberAgeLawMaleArr.push(theForm.elements[i]);
}
}else if(tmpArray[j] == 'alf' && !CFW.oValid.fnIsNull(theForm.elements[i].value)){//有不合法的法定女性年龄型字段
if(CFW.oValid.fnIsInteger(theForm.elements[i].value) && (pint>=16) && (pint<=55)){
}else{
numberAgeLawFemaleStr = numberAgeLawFemaleStr + '\n' + colName;
numberAgeLawFemaleArr.push(theForm.elements[i]);
}
}else if(tmpArray[j] == 'p' && !CFW.oValid.fnIsNull(theForm.elements[i].value)){//有不合法的邮政编码型字段
if(CFW.oValid.fnIsInteger(theForm.elements[i].value) && (theForm.elements[i].value.length == 6)){
}else{
postcodeStr = postcodeStr + '\n' + colName;
postcodeArr.push(theForm.elements[i]);
}
}else if(tmpArray[j]=='ml' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid.fnIsEmail(theForm.elements[i].value)){//有不合法的邮箱字段
mailStr = mailStr + '\n' + colName;
mailArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 't' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid.fnIsPhoneNumber(theForm.elements[i].value)){//有不合法的电话号码型字段
telLStr = telLStr + '\n' + colName;
telLArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 'd' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid.fnIsDate(theForm.elements[i].value)){//有不合法的日期型字典
dateStr = dateStr + '\n' + colName;
dateArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 'dl' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid.fnIsDateTime(theForm.elements[i].value)){//有不合法的(YYYY-MM-DD HH24:MI:SS)日期型字典
dateLongStr = dateLongStr + '\n' + colName;
dateLongArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 'ds' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid._fnIsDateShort(theForm.elements[i].value)){//有不合法的(YYYY-MM)日期型字典
dateShortStr = dateShortStr + '\n' + colName;
dateShortArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 'dc' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid.fnIsDateClose(theForm.elements[i].value)){//有不合法的(YYYYMM)日期型字典
dateCloseStr = dateCloseStr + '\n' + colName;
dateCloseArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 'dt' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid.fnIsTime(theForm.elements[i].value)){//有不合法的(HH24:MI:SS)时间型字典
dateTimeStr = dateTimeStr + '\n' + colName;
dateTimeArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 'ac' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid.fnIsAllChinese(theForm.elements[i].value)){//不合法的纯中文字符串
chineseStr = chineseStr + '\n' + colName;
chineseArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 'nc' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && CFW.oValid.fnHasChinese(theForm.elements[i].value)){//不合法的非中文字符串
notHasChineseStr = notHasChineseStr + '\n' + colName;
notHasChineseArr.push(theForm.elements[i]);
}else if(tmpArray[j].indexOf('f')!=-1&&tmpArray[j]!='alf'){ //校验浮点型数据类型
var tmp = tmpArray[j];
var len = tmp.length;
var ips = tmp.indexOf('f');
var str = "";
var val = theForm.elements[i].value;
var ixu =0; //小数位数
var izu =0; //整数位数
if(val==''){
continue;
}else{
val = val.replace(/,/gi,'');
}
if(!CFW.oValid.fnIsFloat(val)){
floatStr = floatStr + '\n' + colName +' 必须为数值 ';
floatArr.push(theForm.elements[i]);
continue;
}
if(ips!=-1&&(ips+1)!=len){
str = tmp.split('f');
ixu = parseInt(str[1],10);
if(!CFW.oValid.fnCheckFloat(val, ixu)){
floatStr = floatStr + '\n' + colName +' 必须为'+ixu+'位小数 ';
floatArr.push(theForm.elements[i]);
continue;
}
}else{
var ips2 = val.indexOf('.');
if(ips2!=-1){
floatStr = floatStr + '\n' + colName +' 不能带有小数 ';
floatArr.push(theForm.elements[i]);
continue;
}
}
str = tmp.split('f');
if(str[0]==''){
izu = 1;
}else{
izu = parseInt(str[0],10);
}
str = val.split('.');
tmp = str[0];
len = tmp.length;
if(parseInt(len,10) > izu){
floatStr = floatStr + '\n' + colName +' 不能大于'+izu+'位整数 ';
floatArr.push(theForm.elements[i]);
continue;
}
}else if(tmpArray[j] == 'sfz' && !CFW.oValid.fnIsNull(theForm.elements[i].value) && !CFW.oValid._fnFWidcardCheck(theForm.elements[i].value)){//有不合法的身份证型字段
sfzStr = sfzStr + '\n' + colName +' '+CFW.oValid._IDCARD_MSG;
sfzArr.push(theForm.elements[i]);
}else if(tmpArray[j] == 's'&& !CFW.oValid.fnIsNull(theForm.elements[i].value)){//有不合法的视力型字段
if(CFW.oValid.fnCheckFloat(theForm.elements[i].value, 1) && (((pfloat>=0.1) && (pfloat<=1.5))||((pfloat>=4.0)&&(pfloat<=5.2))) ){
}else{
floatSightStr = floatSightStr + '\n' + colName;
floatSightArr.push(theForm.elements[i]);
}
}else if(tmpArray[j] == 'c'&& !CFW.oValid.fnIsNull(theForm.elements[i].value)){//有不合法的颜色型字段
var c1=theForm.elements[i].value.substr(0,1);
var c2=theForm.elements[i].value.substr(1,6);
if((theForm.elements[i].value.length==7) && (c1=="#") && (parseInt(c2,16)>=0) && (parseInt(c2,16)<=16777215)){
}else{
colorStr = colorStr + '\n' + colName;
colorArr.push(theForm.elements[i]);
}
}else if(tmpArray[j].substr(0,1) == 'l'){
var tmpA1=new String();
var bitL;
tmpA=tmpArray[j];
if(arguments.length==2){
if(options.valLenRule=='char'){
bitL=(theForm.elements[i].value).length;
}else{
bitL=CFW.oStr.fnLengthB(theForm.elements[i].value);
}
}else{
bitL=CFW.oStr.fnLengthB(theForm.elements[i].value);
}
var tmpAL=tmpA.length;
var pos1=tmpA.indexOf("(");
var pos2=tmpA.indexOf("-");
var pos3=tmpA.indexOf(")");
var bitL1=0;
var bitL2=0;
if(pos2!=-1){
bitL1=tmpA.substring(pos1+1,pos2);
bitL2=tmpA.substring(pos2+1,pos3);
}else{
bitL1=0;
bitL2=tmpA.substring(pos1+1,pos3);
}
if(bitL!=0){
if(CFW.oValid.fnIsInteger(bitL1)&&CFW.oValid.fnIsInteger(bitL2)){
if(bitLbitL2){
bitLStr = bitLStr + '\n' +colName+'(字母或数字长度应在'+bitL1+'和'+bitL2+'之间,汉字长度应在'+Math.floor(parseInt(bitL1)/2)+'和'+Math.floor(parseInt(bitL2)/2)+'之间)';
bitLArr.push(theForm.elements[i]);
}
}
}
}else if(tmpArray[j].substr(0,2) == 'sn'){
var tmpA=tmpArray[j].substr(2);
if(!basicCondiction[tmpA]){
basicCondiction[tmpA]=[];
basicCondiction.length++;
}
var one={
'colName':colName,
'title':colName,
'isNull':CFW.oValid.fnIsNull(theForm.elements[i].value),
'target':theForm.elements[i]
};
basicCondiction[tmpA].push(one);
}
}
}
if (notnullStr.length > 0){
CFW.oWin.fnAlert('以下字段不能为空!' + notnullStr);
this._tryFocusEditableOne(notnullArr);
return false;
}else if (sfzStr.length > 0){
CFW.oWin.fnAlert('以下身份证型字段不合法!' + sfzStr);
this._tryFocusEditableOne(sfzArr);
return false;
}else if (numberStr.length > 0){
CFW.oWin.fnAlert('以下数字型字段不合法!' + numberStr);
this._tryFocusEditableOne(numberArr);
return false;
}else if (numberHeightStr.length > 0){
CFW.oWin.fnAlert('以下身高型字段不合法!' + numberHeightStr);
this._tryFocusEditableOne(numberHeightArr);
return false;
}else if (numberWeightStr.length > 0){
CFW.oWin.fnAlert('以下体重型字段不合法!' + numberWeightStr);
this._tryFocusEditableOne(numberWeightArr);
return false;
}else if (numberAgeStr.length > 0){
CFW.oWin.fnAlert('以下年龄型字段不合法!' + numberAgeStr);
this._tryFocusEditableOne(numberAgeArr);
return false;
}else if (numberAgeLawMaleStr.length > 0){
CFW.oWin.fnAlert('以下法定男性年龄(16~60)型字段不合法!' + numberAgeLawMaleStr);
this._tryFocusEditableOne(numberAgeLawMaleArr);
return false;
}else if (numberAgeLawFemaleStr.length > 0){
CFW.oWin.fnAlert('以下法定女性年龄(16~55)型字段不合法!' + numberAgeLawFemaleStr);
this._tryFocusEditableOne(numberAgeLawFemaleArr);
return false;
}else if (postcodeStr.length > 0){
CFW.oWin.fnAlert('以下邮政编码型字段不合法!' + postcodeStr);
this._tryFocusEditableOne(postcodeArr);
return false;
}else if (telLStr.length > 0){
CFW.oWin.fnAlert('以下电话型字段不合法!(格式示例:+86020-12345678)' + telLStr);
this._tryFocusEditableOne(telLArr);
return false;
}else if (dateStr.length > 0){
CFW.oWin.fnAlert('以下日期型字段格式不合法!(格式示例:2005-05-05)' + dateStr);
this._tryFocusEditableOne(dateArr);
return false;
}else if (dateLongStr.length > 0){
CFW.oWin.fnAlert('以下日期型字段格式不合法!(格式示例:2005-05-05 23:59:59)' + dateLongStr);
this._tryFocusEditableOne(dateLongArr);
return false;
}else if (dateShortStr.length > 0){
CFW.oWin.fnAlert('以下日期型字段格式不合法!(格式示例:2005-05)' + dateShortStr);
this._tryFocusEditableOne(dateShortArr);
return false;
}else if (dateCloseStr.length > 0){
CFW.oWin.fnAlert('以下日期型字段格式不合法!(格式示例:200505)' + dateCloseStr);
this._tryFocusEditableOne(dateCloseArr);
return false;
}else if (dateTimeStr.length > 0){
CFW.oWin.fnAlert('以下时间型字段格式不合法!(格式示例:23:59:59)' + dateTimeStr);
this._tryFocusEditableOne(dateTimeArr);
return false;
}else if (chineseStr.length > 0){
CFW.oWin.fnAlert('以下纯中文字符串不合法!' + chineseStr);
this._tryFocusEditableOne(chineseArr);
return false;
}else if (notHasChineseStr.length > 0){
CFW.oWin.fnAlert('以下非中文字符串不合法!' + notHasChineseStr);
this._tryFocusEditableOne(notHasChineseArr);
return false;
}else if (floatStr.length > 0){
CFW.oWin.fnAlert('以下浮点型字段不合法!' + floatStr);
this._tryFocusEditableOne(floatArr);
return false;
}else if (floatSightStr.length > 0){
CFW.oWin.fnAlert('以下浮点型字段不合法!(示例:0.1~1.5 或者 4.0~5.2)' + floatSightStr);
this._tryFocusEditableOne(floatSightArr);
return false;
}else if (bitLStr.length > 0){
CFW.oWin.fnAlert('以下字段长度不合法!' + bitLStr);
this._tryFocusEditableOne(bitLArr);
return false;
}else if (colorStr.length > 0){
CFW.oWin.fnAlert('以下颜色型字段不合法!' + colorStr);
this._tryFocusEditableOne(colorArr);
return false;
}else if (mailStr.length > 0){
CFW.oWin.fnAlert('以下email地址型字段不合法!' + mailStr);
this._tryFocusEditableOne(mailArr);
return false;
}
if(basicCondiction.length>0){
for(var att in basicCondiction){
if(att=='length')continue;
var flag=false;
var msg='下列字段之一必录:';
var arr = [];
for(v_index=0;v_index
* 使用方法举例:
* CFW.oGt.fnOpenHelp(url)
*
*/
fnOpenHelp : function(url){
var w=600;
var h=400;
var l = (screen.Width-w)/2;
var t = (screen.Height-h)/2;
window.open(url,"","top=" +t+ ", left=" + l+",width="+w+",height="+h+",toolbar=no,resizable=yes,status=no");
},
/**
* 功能简述:证件类型的处理。
* 功能详细说明:证件类型的级联处理,当父级控件下拉框选择证件类型为身份证号码后,
* 子级控件录入证件号码时,会自动调用身份证号码的校验功能。
* @param oParentOBJ 父级控件名,类型object
* @param oChildOBJ 子级控件名,类型object
* @returns {Boolean} True, False
*
* 使用方法举例:
* CFW.oGt.fnZjlx(aform.ZJLX,aform.SFHM);
*
*/
fnZjlx : function(oParentOBJ, oChildOBJ){
var child = jQuery(oChildOBJ).attr("name");
var parent = jQuery(oParentOBJ).attr("name");
jQuery(oChildOBJ).attr("pn",parent);
jQuery(oParentOBJ).attr("cn",child);
jQuery(oChildOBJ).unbind('keydown');
jQuery(oChildOBJ).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
if(oParentOBJ.value=='1'){//为身份证号码
if(event.keyCode == 88){//X
return true;
} //只能录入数字
if(CFW.oValid._fnFWNumOnly(event)){
return true;
}
return false;
}
return true;
});
//焦点失去事件
jQuery(oChildOBJ).bind('blur',function(){
if(oParentOBJ.value=='1'){//为身份证号码
CFW.oValid._fnFWidcard(this);
}
});
return true;
},
/**
* 功能简述:去除表单控件中边框和底部颜色。
* 功能详细说明:检验表单控件不能为空时,会给录入框值为空的边框和底部加颜色
* 此函数负责把颜色去掉,恢复原来的正常色。
* @param oForm 控件对象 类型:object,如:aform。
*
* 使用方法举例:
* CFW.oGt.fnReNullShow(aForm);//去除提示的红色边框
*
*/
fnReNullShow : function(oForm){
var ele;
var readOnly;
for (i = 0; i < oForm.elements.length; i ++){//遍历form中的字段
ele = oForm.elements[i];
readOnly = $(ele).attr('readOnly');
if ($(ele).attr('vldStr')==null || $(ele).attr('vldStr')==''){
continue;
}
if(readOnly&&ele.type!='select-one'){
continue;
}
if($(ele).hasClass("valueInvalide")){
$(ele).removeClass("valueInvalide");
}
//处理下拉框的情况
if(ele.type=='select-one'){
if($.data(ele, 'fwcombox')!=null){
var span = jQuery.data(ele, 'fwcombox').fwcombox;
var input = jQuery('.fwcombox-text',span);
if(input.hasClass("valueInvalide")){
input.removeClass("valueInvalide");
}
}
}
}
},
/**
* 功能简述:撤销掉form内所有对象的只读属性。
* 功能详细说明:主要用于JSP页面上,撤销整个表单内所有控件只读属性,
* 也可以撤销某些控件只读属性。
* @param oForm 控件对象 类型:object,如:aform。
* @param sFilelds form中的输入框名字 string 如:'GMSFHM',有多个的写法:['XM','GMSFHM']
* @param bFlag -1 表示,除了指定的fields之外
*
* 使用方法举例:
* 使用方法1:
* CFW.oGt.fnReFormReadOnly(document.genChkbxForm); //撤销整个表单只读属性
* 使用方法2:
* CFW.oGt.fnReFormReadOnly(document.lrxxForm, ['BAE007'], -1); //设置BAE007为只读属性。
*
*/
fnReFormReadOnly : function(oForm, sFilelds, bFlag){
if (typeof oForm == 'string') {
oForm = eval("document."+oForm+"");
}
//需处理的字段的j集合,无论前台是什么类型,一律转成object集合
var fieldsSet ={};
if(sFilelds == null || sFilelds == ''){
//全集
for(i=0;i
* 使用方法举例:
* 使用方法 CFW.oGt.fnFormToGrid(aform,"zzy_t2");
*
*/
fnFormToGrid : function(oTheform, sConfigID){
var rst = this.fnGetForm(oTheform);
jQuery('select',oTheform).each(function(){
var txt="";
if(this.value!=''){
txt = CFW.oGt.fnGetComText(this);
}
rst['_DIC_'+this.name]=txt;
});
var target =$('#'+sConfigID).get(0);
var headers = $.data(target, 'fwdatagrid').options.data.headers;
var datas={};
for(var i=0;i
* 使用方法举例:
* //设置表单form_dyzfxx中,AAE133,AAE010,CAE581这三个字段为必录项。
* CFW.oGt.fnChangeVldStr(form_dyzfxx,['AAE133','AAE010','CAE581'],'nn');
*
*/
fnChangeVldStr : function(form,aFields,sVldStr) {
var theForm = $(form);
$.each(aFields, function(i, o) {
var flag = false;
var subStrFlag=false;//是否截取
var label = $("[name='" + o + "']", theForm).closest('td').prev().css("color","black");
$("[name='" + o + "']", theForm).closest('td').prev().find('.vldnn').remove();
if(sVldStr != null && $.trim(sVldStr) != ''){//只要vldstr不为空flag为true
if( sVldStr.indexOf('nn') >= 0){//包含非空必录
if(VLD_NN_STYLE=='v1'){
label.css("color","blue");
}else if(VLD_NN_STYLE=='v2'){
$("[name='" + o + "']", theForm).closest('td').prev().prepend('* ');
subStrFlag=true;
}else if(VLD_NN_STYLE=='v3'){
label.css("color","blue");
$("[name='" + o + "']", theForm).closest('td').prev().prepend('* ');
subStrFlag=true;
}
}
if(sVldStr.indexOf('sn') >= 0){//包含基础查询条件
label.css("color","#be0101");
}
flag = true;
}
var msg = label.text();
if(subStrFlag&&msg.length>0){
msg=$.trim(msg.substr(1,msg.length));
}
if($("[name='" + o + "']", theForm).hasClass("bankaccounthid")){
$("[name='_HID_" + o + "']", theForm).get(0).vldStr = !flag ? '' : msg + "=" + sVldStr;
}else if($("[name='" + o + "']", theForm).hasClass("searchgridbox")){
var s=$("[name='" + o + "']", theForm).next();
$(s).get(0).vldStr = !flag ? '' : msg + "=" + sVldStr;
}else{
$("[name='" + o + "']", theForm).get(0).vldStr = !flag ? '' : msg + "=" + sVldStr;
}
});
},
/**
* 功能简述:判断控件是否可编辑。
* 功能详细说明: 主要用于判断表单中某个控件是否可以编辑,即:录入文本框可否录入数据,
* 下拉框可否选择参数等设置。
* @param oOBJ 控件对象 类型:object,如:aform.XB
* @returns {Boolean} true ,false
*
* 使用方法举例:
* //若当前转移类型可编辑,则传值到明细页面可设置默认值
* if(fnIsObjEnable(cxtjForm.AAE173)){
* }
*
*/
fnIsObjEnable : function(oOBJ){
var qObj=$(oOBJ);
if(qObj.hasClass('searchgridbox')){
return !qObj.searchgrid('disabled');
}else if($.data(oOBJ, 'fwcombox')!=null){
return !qObj.fwcombox('disabled');
}else if (oOBJ.type == 'checkbox' ||oOBJ.type == 'radio'
||oOBJ.type == 'select-one'){
return !oOBJ.disabled;
}else{
return !qObj.hasClass("readOnly");
}
},
/**
* 功能简述:判断控件是否可见。
* 功能详细说明: 主要用于判断表单中某个控件是否可以编辑,即:判断某些按钮,或者from表单
* 在IE浏览器打开后,在JSP页面上是可见,还是不可见。
* @param oObj 控件对象 类型:object,如:aform
* @returns {Boolean} true ,false
*
* 使用方法举例:
* //若当前cxtjForm可见,则设置默认值
* if(fnIsObjVisible(cxtjForm)){
* }
*
*/
fnIsObjVisible : function(oObj){
var qObj=$(oObj);
if(qObj.hasClass('searchgridbox')){
return qObj.searchgrid('visible');
}else if($.data(oObj, 'fwcombox')!=null){
return qObj.fwcombox('visible');
}else if (oObj.type == 'checkbox' ||oObj.type == 'radio'
||oObj.type == 'select-one'){
return qObj.is(":visible");
}else{
return qObj.is(":visible");
}
},
/**
* 功能简述:form内部控件的获取
* 功能详细说明: 从html的form里面提取控件的值,用object表示,属性名是控件的名称,属性值是控件的值。
* 如果form里面有重名控件,那么属性值是个数组。另外,checkbox和可以多选的下拉列表的值
* 总是数组。
* @param form : 必须,控件对象 类型:dom,如:aform
* @returns JSON对象
*
* 使用方法举例:
* CFW.oGt.fnGetForm(aform)
*
*/
fnGetForm : function(form){
//先取有效的只
var array = $(form).serializeArray();
var rst = {};
//重复的组织成数组
$.each(array,function(index,element){
if(typeof rst[element.name] !='undefined'){
try{//加入数组
rst[element.name].push(element.value);
}catch(e){//合并
rst[element.name]=[rst[element.name],element.value];
}
}else{
rst[element.name]=element.value;
}
});
//如果是字典项,添加字典项的中文在这个form里面
$('.combobox,.incombox,.dbcombox,.ldcombox',form).each(function(){
//看看这个控件的代码是否已在GetForm的取值范围内,如果是才取对应的中文值
var name = this.name;
if(rst[name]==null){
return ;
}
if($(this).hasClass('mutiplebox')){
var values=$(this).fwcombox('getValues',this);
rst[name]=values;
//取对应的值
var textValue = $(this).fwcombox('text');
var textName = '_DIC_'+name;
if(textValue!=null){
rst[textName]=textValue.split(',');
}
}else{
//取对应的值
var textValue = $(this).fwcombox('text');
var textName = '_DIC_'+name;
//表单中是否已经存在
if(rst[textName]==null){
//还没有则直接赋值
rst[textName]= textValue;
}else if(!jQuery.isArray(rst[textName])){
//变成数组处理
rst[textName]=[rst[textName],textValue];
}else{
//已经是数组的话,直接push即可
rst[textName].push(textValue);
}
}
});
$('.searchgridbox',form).each(function(){
//看看这个控件的代码是否已在GetForm的取值范围内,如果是才取对应的中文值
var name = this.name;
if(rst[name]==null){
return ;
}
//取对应的值
var textValue = $(this).searchgrid('text');
var textName = '_DIC_'+name;
//表单中是否已经存在
if(rst[textName]==null){
//还没有则直接赋值
rst[textName]= textValue;
}else if(!jQuery.isArray(rst[textName])){
//变成数组处理
rst[textName]=[rst[textName],textValue];
}else{
//已经是数组的话,直接push即可
rst[textName].push(textValue);
}
});
//找出表单中所有的可能为数组的名称串
if(rst['_multiple']){
var _multiple =rst['_multiple'];
if(typeof _multiple =='string'){
_multiple=[_multiple];
}
_multiple=_multiple.join(',').split(',');
//遍历所有可能多值的对象,全部封装成数组
for(var i=0;i<_multiple.length;i++){
var v=rst[_multiple[i]];
if(typeof v=='string'){
rst[_multiple[i]]=[v];
}
//如果是字典项,特殊处理
v=rst['_DIC_'+_multiple[i]];
if(typeof v=='string'){
rst['_DIC_'+_multiple[i]]=[v];
}
}
}
return rst;
},
/**
* 功能简述:设置表单的值,与CFW.fn.GetForm相对应
* @param form : 必须,dom类型, 表单对象,如:aform
* @param mValues : 必须,JSON类型,表单每个控件的数据,如{"CONFIGID","LEIRPT_TEST01"}
* @returns void
*
* 使用方法举例:
* CFW.oGt.fnSetForm(aform,{"CONFIGID","LEIRPT_TEST01"})
*
*/
fnSetForm : function(form,mValues){
var formName = form.name;
var target;
for(key in mValues){
target = null;
try{
target = $('[name="'+key+'"]',form).get(0);
}catch(e){
target = null;
}
try{
if(jQuery.data(target,"fwcombox")!=null){
this.fnSetCombVal(target,mValues[key]);
}else if(jQuery(target).hasClass("searchgridbox")){
//05q,05p特殊处理
//看看有没有字典项_DIC_如果有自动设置
//先判断是否为空
if(mValues[key]===null||typeof mValues[key]=='undefined'){
target.value='';
}else{
target.value= mValues[key];
}
if(mValues['_DIC_'+key]){
//有就拿里面的值
jQuery(target).searchgrid('text',mValues['_DIC_'+key]);
}else{
//没有就从数据库获取值
$(target).searchgrid('setTextById',mValues[key]);
}
}else if(jQuery(target).hasClass('datebox')){
var val = mValues[key]+'';
val = val.replace(/,/g,'');
if(val.length==10){
target.value = val;
}else if(val.length==8){
target.value = val.substr(0,4)+'-'+ val.substr(4,2) +'-'+ val.substr(6,2);
} else {
target.value = "";
}
}else if(jQuery(target).hasClass('datetime')){
var val = mValues[key]+'';
val = val.replace(/,/g,'');
if(val.length==19){
target.value = val;
}else if(val.length==14){
target.value = val.substr(0,4)+'-'+ val.substr(4,2) +'-'+ val.substr(6,2) + ' ' + val.substr(8,2) + ':'+ val.substr(10,2)+":"+ val.substr(12,2);
} else {
target.value = "";
}
}else if(jQuery(target).hasClass('bankaccounthid')){
var val= mValues[key]+'';
var temp='';
val=val.replace(/\s+/g,"");
for(var i=0;i0 && i%4==0){
temp+=" ";
}
temp += val.substr (i,1);
}
target.value=val;
var name='_HID_'+key;
jQuery(':input[name="'+name+'"]',form).val(temp);
}else if(target.type=='checkbox'||target.type=='radio'){
if(mValues[key]==null){
jQuery(':input[name="'+key+'"]',form).each(function(i,o){
o.checked=false;
});
}else{
if(target.type=='checkbox'){
//先将所有的checked设置为false,在根据传递的VALUE赋值
jQuery(':input[name="'+key+'"]',form).each(function(i,o){
o.checked=false;
});
if(typeof(mValues[key])=='string'){
jQuery(':input[name="'+key+'"][value="'+mValues[key]+'"]',form).each(function(i,o){
o.checked=true;
});
}else{
for(var i=0;i 1 ){
rst[name] = [];
$item.each(function(){
rst[name].push($(this).val());
});
}
}
}
//字典中文的处理
if(true == bDictZh){
//combox字典项的处理
$(".combobox,.incombox,.dbcombox,.ldcombox",gltObj).each(function(){
var $this = $(this);
//如果rst[this.name]不是null的话,就查找字典项
if(rst[this.name]!=null){
var textName = "_DIC_"+ this.name;
var textValue = $this.fwcombox("text");
//新的字段
if(rst[textName] == null){
rst[textName] = textValue;
}
//多个同名字段
else{
//这是第一个同名字段,则将此数组元素改成数组
if(!$.isArray(rst[textName])){
rst[textName] = [rst[textName]];
}
rst[textName].push(textValue);
}
}
});
//searchgridbox字典项的处理
$(".searchgridbox", gltObj).each(function(){
var $this = $(this);
if(rst[this.name]!=null){
var textName = "_DIC_"+ this.name;
var textValue = $this.searchgrid("text");
//新的字段
if(rst[textName] == undefined || rst[textName] == null){
rst[textName] = textValue;
}
//多个同名字段
else{
//这是第一个同名字段,则将此数组元素改成数组
if(!$.isArray(rst[textName])){
rst[textName] = [rst[textName]];
}
rst[textName].push(textValue);
}
}
});
}
//_multiple的处理
if(rst["_multiple"]!=null && rst["_multiple"]!=""){
if(!$.isArray(rst["_multiple"])){
rst["_multiple"] = [rst["_multiple"]];
}
var multipleNames = rst["_multiple"].join(",").split(",");
for(var i=0; i< multipleNames.length;i++){
var mName = $.trim(multipleNames[i]);
if(mName != "" && null != rst[mName]){
if(!$.isArray(rst[mName])){
rst[mName] = [rst[mName]];
}
var dname = "_DIC_"+mName;
if(null != rst[dname] && undefined != rst[dname] && !$.isArray(rst[dname])){
rst[dname] = [rst[dname]];
}
}
}
}
//移除对后台没有用处的_multiple
delete rst["_multiple"];
return rst;
},
/**
* 功能简述:一次性保存多个单记录表单
* @param aParams 数组,包含JSON数据元素,如下面例子所示。JSON数据元素的结构如下
* 1 configId MAPPER配置ID。如"BATCHSAVE.BATCHSAVE_DW_I"
* 2 data: 表单数据
* @param fnCallback 回调函数,后台执行完成后调用该函数。
* @return data
*
* 使用方法:
* var aFields = ["XM", "YDDH", "GRSXH", "DWSXH", "GMSFHM"];
* var oGrxxData= CFW.oGt.fnGetColData('cbdj_grjbzl_grxx',fields,true);
* var aParams = [];
* var oCbxxData={'XM':'张三', 'YDDH':13233424242, 'SBGZ':3000.00,'GRSXH':231113};
* aParams.push({configId:"CBDJ_GRJBZL.GRXX_DJ_I",data:oGrxxData});
* aParams.push({configId:"CBDJ_GRJBZL.CBXX_GX_U",data:oCbxxData});
* CFW.oGt.fnSaveTables(aParams,function(data){
* alert("批量保存成功");
* });
*
*/
fnSaveTables : function(aParams,fnCallback){
if(!$.isArray(aParams) || 0==aParams.length){
return;
}
var service = new Service();
for(var i=0, len=aParams.length; i
* 使用方法
*var pzc="{#demo_hdxx_insert.HDBT}==1"+"@@"
* +"#val{demo_hdxx_insert.HDID=1*demo_hdxx_insert.[HDID,HDLB]=1};"+
* "#invisible{demo_hdxx_insert*Btn.[btnCx1,btnCx2]*Btn.btnCx3};"+
* "#disable{demo_hdxx_cxtj*Btn.[btnCx1,btnCx2]*Btn.btnCx3*demo_hdxx_insert.[HDBT,HDLB]*demo_hdxx_insert.HDFQR};"+
* "#callback{fun()*fun2()};"+
* "#alert{华南资讯}";
* var pzc2="{#demo_hdxx_cxtj.HDID}==1"+"@@"
* +"#visible{demo_hdxx_insert*Btn.[btnCx1,btnCx2]*Btn.btnCx3};"+
* "#enable{demo_hdxx_cxtj*Btn.[btnCx1,btnCx2]*Btn.btnCx3*demo_hdxx_insert.[HDBT,HDLB]*demo_hdxx_insert.HDFQR};"+
* "#vld{demo_hdxx_insert.HDKSSJ=*demo_hdxx_cxtj.[HDID,HDFQR]=nn};"+
* "#dictFilter{demo_hdxx_insert.HDLB=1*demo_hdxx_insert.HDLB=[2]}";
* var aPzcs=new Array();
* aPzcs.push(pzc);
* aPzcs.push(pzc2);
* CFW.oGt.bindChange(aPzcs);
*
*/
bindChange : function (obj){
var aJgj=new Array();
//逐个配置串绑定事件
for(var i=0;i
* 使用方法
* var sWhereCls=" AAC002='425511198006171280'";
* CFW.oGt.fnGetData(aform, 'bxgx_ylstzhwh_ryjyzl', sWhereCls,function(data){
* alert('执行成功!');
* });
*
*/
fnGetData : function(form, sDsId, sWhereCls, fnCallback, dsId){
if(sWhereCls == null || $.trim(sWhereCls) == ""){
alert("没有配置where语句");
return false;
}
if(_ENCRYPT_WHERE){
if(sWhereCls!=null&&sWhereCls!='null'&&sWhereCls!=''&&sWhereCls!='undefined'){
sWhereCls=stringToHex(encrypt(WHEREKEY,sWhereCls));
}
}
new Service({
serviceId:'gtService',
method:'getFwQuerySql',
parameters:{ID:sDsId,WHERECLS:sWhereCls,DSID:dsId}
}).sentAjax('正在更新表单', function(data){
if(undefined != data[0]&&data[0]!=null&&data[0][0]!=null){
CFW.oGt.fnSetForm(form, data[0][0])
if(fnCallback && $.isFunction(fnCallback)){
fnCallback(data[0][0]);
}
}else{
if(fnCallback && $.isFunction(fnCallback)){
fnCallback(null);
}else{
alert("没有查询到符合条件的数据!");
}
return false;
}
});
},
/**
* 功能说明:解析界面联动的条件
* @param tj 条件
* @param dzj 动作集
*/
_fnParse:function(tj,dzj){
var aDzj=dzj.split(";");
var jgj={};
var pattern = /\{#\w+\.\w+\}/g;
var rs=tj.match(pattern);
var aZd=new Array();
var aZd2=new Array();
for(var i=0;i0){
if(this._fnStartWith(sDz,'Btn')){
var jsonStr="";
var sBtn=sDz.substring(4);
if(this._fnStartWith(sBtn,'[')){
sBtn=sBtn.substring(1,sBtn.length-1);
var aBtn=sBtn.split(',');
for(var l=0;l0){
if(this._fnStartWith(sDz,'Btn')){
var jsonStr="";
var sBtn=sDz.substring(4);
if(this._fnStartWith(sBtn,'[')){
sBtn=sBtn.substring(1,sBtn.length-1);
var aBtn=sBtn.split(',');
for(var l=0;l0){
if(this._fnStartWith(sDz,'Btn')){
var sBtn=sDz.substring(dotIndex+1);
if(this._fnStartWith(sBtn,'[')){
sBtn=sBtn.substring(1,sBtn.length-1);
jsonStr+='CFW.oBtn.fnBtnStatus([';
var aBtn=sBtn.split(',');
for(var l=0;l0){
if(this._fnStartWith(sDz,'Btn')){
var sBtn=sDz.substring(dotIndex+1);
if(this._fnStartWith(sBtn,'[')){
sBtn=sBtn.substring(1,sBtn.length-1);
jsonStr+='CFW.oBtn.fnBtnStatus([';
var aBtn=sBtn.split(',');
for(var l=0;lstr.length)
return false;
if(str.substr(0,regx.length)==regx)
return true;
else
return false;
return true;
},
/**
* 显示隐藏表格
* @param imgId
* @param tableId
*/
_fnShowTable : function(imgId,tableId){
var tableDivObj = document.getElementById(tableId);
var imageObj = document.getElementById(imgId);
var srcPath = imageObj.src;
var re;
tableDivObj.style.display = (tableDivObj.style.display=="none"?"block":"none");
if(tableDivObj.style.display=='none'){
re = /right/g;
imageObj.src=srcPath.replace(re,'down');
var ft = $("#"+tableId).parent("fieldset").get(0);
var needMoveArchiveBtn = ft.needMoveArchiveBtn;
if("true" == needMoveArchiveBtn){
var fwgtid = ft.fwgtid;
var tblArchiveDiv = document.getElementById(fwgtid+"_archive_div");
if(null != tblArchiveDiv){
var tblHeight = $("#" + fwgtid).parent().outerHeight();
tblArchiveDiv.style.top = parseInt(tblArchiveDiv.style.top) - tblHeight;
}
}
}else{
re = /down/g;
imageObj.src=srcPath.replace(re,'right');
$(document).trigger('gridlazyInit');
CFW.oWin.fnResizeObject(tableDivObj);
/**if($("div:first",tableDivObj).hasClass("fwdatagrid")){
$(tableDivObj).fwdatagrid('setSize',tableDivObj);
}*/
var ft = $("#"+tableId).parent("fieldset").get(0);
var needMoveArchiveBtn = ft.needMoveArchiveBtn;
if("true" == needMoveArchiveBtn){
var fwgtid = $("#"+tableId).parent("fieldset").get(0).fwgtid;
var tblArchiveDiv = document.getElementById(fwgtid+"_archive_div");
if(null != tblArchiveDiv){
var tblHeight = $("#" + fwgtid).parent().outerHeight();
tblArchiveDiv.style.top = parseInt(tblArchiveDiv.style.top) + tblHeight;
}
}
}
},
/**
* 初始化表格的控件
* @param tableId
*/
_fnInitObject : function(tableId){
var tableDivObj = document.getElementById(tableId);
//获取全部的下拉框的宽度保存到mw属性值内
//注意目前只有这种方式才能让下拉框的宽度保持一致;
//fwcombox.js init(target) 函数内会引用到
jQuery('select',tableDivObj).each(function(){
var mw = $(this).outerWidth();
$(this).attr('mw',mw);
});
var that = this;
var isInit = true;
$(':input',tableDivObj).each(function(){
if(this.id == (tableId+"_rowHid_init")){
isInit = false;
}
if(isInit){
that._fnObjInit(this);
}
});
},
/**
* 初始化每个控件
* @param obj 控件对象
*/
_fnObjInit : function (obj){
var input = $(obj);
jQuery(obj).each(function(){
//有disabled的属性改成readOnly 目的是改变字体的颜色
if(this.type=='checkbox'||this.type=='radio'){
return true;
}
if(this.type=='text'||this.type=='textarea'||this.type=='password'){
//下拉框的不用理会
if($(this).hasClass('fwcombox-text')){
return true;
}
//可编辑多记录表的下拉框不用理会
if($(this).attr('cmb')=='true'){
return true;
}
if($(this).attr('disabled')==true){
$(this).removeAttr('disabled');
$(this).attr("readOnly",true);
CFW.oGt.fnToDisabledObj(this);
}
if($(this).attr('readOnly')==true){
CFW.oGt.fnToDisabledObj(this);
}
}
});
//一般的单行文本输入框
if(input.hasClass('textbox')){
_fnFWinitTextBox(obj);
return true;
}
// 身份证录入框
if(input.hasClass('idcardbox')){
_fnFWinitIdCardBox(obj);
return true;
}
//只能录入数值框
if(input.hasClass('numberbox')){
_fnFWinitNumberBox(obj);
return true;
}
//只能录入浮点数
if(input.hasClass('floatbox')){
_fnFWinitFloatBox(obj);
return true;
}
//只能录入日期
if(input.hasClass('datebox')){
if($(obj).attr("dateFormat") == 'yyyy-mm' || $(obj).attr("dateFormat") == 'YYYY-MM'){
var boxLength = $(obj).attr("boxLength") == null ? 5 : parseInt($(obj).attr("boxLength"));
input.datepicker({
dateFormat: 'yy-mm',
length : boxLength
});
}else{
input.datepicker();
}
_fnFWinitDateBox(obj);
return true;
}
//只能录入日期 时间
if(input.hasClass('datetime')){
_fnFWinitDateTime(obj);
return true;
}
//只能录入日期 时间
if(input.hasClass('datetimenew')){
_fnFWinitDateTimeNewStyle(obj);
return true;
}
//只录入时分
if(input.hasClass('timebox')){
_fnFWinitTimeBox(obj);
return true;
}
//只录入中文
if(input.hasClass('chinessbox')){
_fnFWinitChinessBox(obj);
return true;
}
//只能录入年月
if(input.hasClass('yearmonthbox')){
_fnFWinitYearmonthBox(obj);
return true;
}
if(input.hasClass('bankaccount')){
_fnFWInitBankaccount(obj);
return true;
}
//只能录入邮政编码
if(input.hasClass('postbox')){
_fnFWinitPostBox(obj);
return true;
}
//只能录入电话号码
if(input.hasClass('phonebox')){
_fnFWinitPhoneBox(obj);
return true;
}
//不允许复制拷贝录入框
if(input.hasClass('notpastebox')){
_fnFWinitNotpasteBox(obj);
return true;
}
//对普通的下拉框进行封装
if(input.hasClass('combobox')){
var __this = obj;
$(__this).fwcombox({editable:false});
var span =jQuery.data(__this,'fwcombox').fwcombox;
var arrow = span.find('span.fwcombox-arrow');
jQuery(__this).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(__this).attr("readOnly")){return true;}
var msg = CFW.oValid._fnFWelementValidate(__this);
if(msg!=null){
CFW.oTip.fnValidateTip(arrow,msg);
}else{
$(arrow).prev().qtip("destroy");
}
});
return true;
}
//对可录入下拉框进行封装
if(input.hasClass('incombox')){
var options={editable:true};
if(input.hasClass('mutiplebox')){
options={editable:true,multiple:true};
}
var __this = obj;
$(__this).fwcombox(options);
var span =jQuery.data(__this,'fwcombox').fwcombox;
var arrow = span.find('span.fwcombox-arrow');
jQuery(__this).bind('change',function(){
//若为只读则不往下执行
if(jQuery(__this).attr("readOnly")){return true;}
var msg = CFW.oValid._fnFWelementValidate(__this);
if(msg!=null){
CFW.oTip.fnValidateTip(arrow,msg);
}else{
$(arrow).prev().qtip("destroy");
}
});
return true;
}
//对可录入远程数据库查询下拉框进行封装
if(input.hasClass('dbcombox')){
input.fwcombox({editable:true,remotedb:true});
return true;
}
//联动下拉框 现在已经不用这种方式
//处理目的:当父下拉框选择某项值后,根据此值过滤子下拉框的内容
if(input.hasClass('ldcombox')){
input.fwcombox({editable:false,ldcombox:true});
return true;
}
/**
* 初始化textbox
* @param obj
*/
function _fnFWinitTextBox(obj){
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
});
//焦点失去事件
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化idcardbox
* @param obj
*/
function _fnFWinitIdCardBox(obj){
// 焦点失去事件
jQuery(obj).bind('blur',function(){
// 若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
this.value=this.value.toUpperCase();
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
return true;
} else {
$(this).qtip("destroy");
}
CFW.oValid._fnFWidcard(this);
});
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
if(event.keyCode == 88){// X
return true;
}
// 只能录入数字
if(CFW.oValid._fnFWNumOnly(event)){
return true;
}
return false;
});
}
/**
*初始化数字框
*/
function _fnFWinitNumberBox(obj){
var val = obj.value;
val = val.replace(/,/g,'');
obj.value = val;
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
switch(event.keyCode){
case 189:// -
case 109:// -(小键盘)
case 190:// .
case 110:// .(小键盘)
case 35:// (End)
case 36:// (Home)
case 37://< (Left)
case 39://> (Right)
return true;
default:
return CFW.oValid._fnFWNumOnly(event);
}
});
//焦点失去事件
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
return;
} else {
$(this).qtip("destroy");
}
// 尝试转化为数值型,继续测试是否为整形
try{
var number = this.value;
if(isNaN(number)){
// 非数值类型,清空输入框
this.value = "";
}else{
// 转换成可以理解的数值(去除重复的“--”和“..”)
this.value = number;
}
}catch(e){
this.value = "";
}
});
}
/**
* 初始化floatbox
* @param obj
*/
function _fnFWinitFloatBox(obj){
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
switch(event.keyCode){
case 189://-
case 109://-(小键盘)
case 190://.
case 110://.(小键盘)
case 35:// (End)
case 36:// (Home)
case 37://< (Left)
case 39://> (Right)
return true;
default:
return CFW.oValid._fnFWNumOnly(event);
}
return false;
});
//焦点失去事件
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
var sValue = this.value;
if(sValue!=null&&sValue.length>0){
sValue = parseFloat(sValue,10);
if(isNaN(sValue)){
this.value = '';
CFW.oTip.fnValidateTip(this,'不是一个浮点数值!');
return;
} else {
$(this).qtip("destroy");
}
this.value = sValue;
sValue = sValue+"";
var iPos = sValue.indexOf(".");
if(iPos==-1){
this.value = sValue+'.00';
}
}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
return;
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化日期控件
* @param obj
*/
function _fnFWinitDateBox(obj){
var val = obj.value;
val = val.replace(/,/g,'');
if(val.length==8){
obj.value = val.substr(0,4)+'-'+ val.substr(4,2) +'-'+ val.substr(6,2);
}
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
if (event.keyCode == 189){ //-
return true;
}
if (event.keyCode == 109){ //-
return true;
}
if (event.keyCode == 191) { // /
return true;
}
if(CFW.oValid._fnFWNumOnly(event)){
return true;
}
return false;
});
//焦点失去事件
jQuery(obj).bind('change',function(){
var val = this.value;
if(val.length==8&&val.indexOf("-")==-1){
this.value = val.substr(0,4)+'-'+ val.substr(4,2) +'-'+ val.substr(6,2);
}
var dateFormat = $(obj).attr("dateFormat");
if(dateFormat == null || dateFormat == ""){
dateFormat = "yyyy-mm-dd";
}
if(!CFW.oValid._fnFWdatebox(this, dateFormat)){
return;
}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化日期控件
* @param obj
*/
function _fnFWinitDateTime(obj){
var val = obj.value;
val = val.replace(/,/g,'');
if(val.length==14){
obj.value = val.substr(0,4)+'-'+ val.substr(4,2) +'-'+ val.substr(6,2) + ' ' + val.substr(8,2) + ':'+ val.substr(10,2)+":"+ val.substr(12,2);
}
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
if(event.keyCode == 189){ //-
return true;
}
if (event.keyCode == 109){ //-
return true;
}
if(event.keyCode == 191) { // /
return true;
}
if (event.keyCode == 186) { // :
return true;
}
if (event.keyCode == 32) { // 空格
return true;
}
if(CFW.oValid._fnFWNumOnly(event)){
return true;
}
return false;
});
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
//yyyy-mm-dd hh:mm:ss
var val = this.value;
//用户只录入201009011223 改成 2010-09-01 12:23:00
if(val.length==12){
this.value = val.substr(0,4)+'-'+ val.substr(4,2) +'-'+ val.substr(6,2) + ' ' + val.substr(8,2) + ':'+ val.substr(10,2)+":00";
}
//用户只录入20100901 1223 改成 2010-09-01 12:23:00
if(val.length==13){
this.value = val.substr(0,4)+'-'+ val.substr(4,2) +'-'+ val.substr(6,2) + ' ' + val.substr(9,2) + ':'+ val.substr(11,2)+":00";
}
//用户只录入20101010121212 改成 2010-10-10 12:12:12
if(val.length==14){
this.value = val.substr(0,4)+'-'+ val.substr(4,2) +'-'+ val.substr(6,2) + ' ' + val.substr(8,2) + ':'+ val.substr(10,2)+":"+ val.substr(12,2);
}
if(!CFW.oValid._fnFWdatetime(this)) {
return false;
}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化日期控件
* @param obj
*/
function _fnFWinitDateTimeNewStyle(obj){
jQuery(obj).bind('click',function(event){
var dateFormat=$(obj).attr("dateFormat");
if(jQuery(this).attr("readOnly")){return true;}
var isShowToday=true;
if(dateFormat=="yyyy"){
isShowToday=false;
}
if(dateFormat=="yyyy-mm"){
dateFormat="yyyy-MM";
}
WdatePicker({dateFmt:dateFormat,isShowToday:isShowToday});
});
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
if(event.keyCode == 189){ //-
return true;
}
if (event.keyCode == 109){ //-
return true;
}
if(event.keyCode == 191) { // /
return true;
}
if (event.keyCode == 186) { // :
return true;
}
if (event.keyCode == 32) { // 空格
return true;
}
if(CFW.oValid._fnFWNumOnly(event)){
return true;
}
return false;
});
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化时间控件
* @param obj
*/
function _fnFWinitTimeBox(obj){
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
if (event.keyCode == 186) { // :
return true;
}
if(CFW.oValid._fnFWNumOnly(event)){
return true;
}
return false;
});
jQuery(obj).bind('blur',function(){
var val = this.value;
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
//用户只录入录120505
if(val.length==6){
this.value=val.substr(0,2)+':'+ val.substr(2,2) + ':'+ val.substr(4,2);
}
//用户只录入1205 改成
if(val.length==4){
this.value=val.substr(0,2)+':'+ val.substr(2,2) + ':00';
}
if(!CFW.oValid._fnFWtimebox(this)){
return;
}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化只能录入中文控件
* @param obj
*/
function _fnFWinitChinessBox(obj){
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
return true;
});
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
if(!CFW.oValid._fnFWchiness(this)){
return ;
}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化银行账号
* @param obj
*/
function _fnFWInitBankaccount(obj){
var val=obj.value;
var temp='';
val=val.replace(/\s+/g,"");
for(var i=0;i0 && i%4==0){
temp+=" ";
}
temp += val.substr (i,1);
}
obj.value=temp;
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
switch(event.keyCode){
case 189:// -
case 109:// -(小键盘)
case 35:// (End)
case 36:// (Home)
case 37://< (Left)
case 39://> (Right)
return true;
default:
return CFW.oValid._fnFWNumOnly(event);
}
return false;
});
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
if(obj.value==""){
if( -1 != obj.name.indexOf("_HID_") ){
var name=obj.name.substr( obj.name.indexOf("_HID_")+5);
jQuery(':input[name="'+name+'"]').val('');
}
return true;
}
var val=obj.value;
var temp='';
val=val.replace(/\s+/g,"");
for(var i=0;i0 && i%4==0){
temp+=" ";
}
temp += val.substr (i,1);
}
obj.value=temp;
if( -1 != obj.name.indexOf("_HID_") ){
var name=obj.name.substr( obj.name.indexOf("_HID_")+5);
jQuery(':input[name="'+name+'"]').val(val);
}
});
}
/**
* 初始化录入年月控件
* @param obj
*/
function _fnFWinitYearmonthBox(obj){
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
//小键盘的数字区
if(event.keyCode >= 96 && event.keyCode <= 105){
return true;
}
//王码五笔字形无法录入数字的问题
if(event.keyCode==229){
return true;
}
if(event.keyCode >= 48 && event.keyCode <= 57 && event.ctrlKey == false && event.shiftKey == false){
/* 解决当值在选中的状态下时输入数字会输入到前边 20110628 herong
str = this.value;
iLen = str.length;
if(iLen>=6){
this.value = str.substr(0,5);
} */
return true;
}
return false;
});
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
if(!CFW.oValid._fnFWyearmonth(this)) {
return;
}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化邮编控件
* @param obj
*/
function _fnFWinitPostBox(obj){
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
//王码五笔字形无法录入数字的问题
if(event.keyCode==229){
return true;
}
//小键盘的数字区
if(event.keyCode >= 96 && event.keyCode <= 105){
return true;
}
if(event.keyCode >= 48 && event.keyCode <= 57 && event.ctrlKey == false && event.shiftKey == false) {
str = this.value;
iLen = str.length;
if(iLen>=6){
this.value = str.substr(0,5);
}
return true;
}
return false;
});
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化电话控件
* @param obj
*/
function _fnFWinitPhoneBox(obj){
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
if(event.keyCode == 189){//-
return true;
}
if(event.shiftKey==true && (event.keyCode==48||event.keyCode == 57)){//()
return true;
}
if(CFW.oValid._fnFWNumOnly(event)){
return true;
}
return false;
});
jQuery(obj).bind('blur',function(){
//若为只读则不往下执行
if(jQuery(this).attr("readOnly")){return true;}
var msg = CFW.oValid._fnFWelementValidate(this);
if(msg!=null){
CFW.oTip.fnValidateTip(this,msg);
} else {
$(this).qtip("destroy");
}
});
}
/**
* 初始化不可粘贴控件
* @param obj
*/
function _fnFWinitNotpasteBox(obj){
jQuery(obj).bind('paste',function(event){
return false;
});
jQuery(obj).bind('contextmenu',function(event){
return false;
});
jQuery(obj).bind('keydown',function(event){
if(CFW.oComm._fnEnterToTab(event)){
return true;
}
return true;
});
}
},
/**
* 功能说明:删掉下拉框内的值,特别说明此函数不会删除IE自带的SELECT框内的值
* @param combox
* @param val
* 此函数配合 filter 一起使用
*
* e.g:
* CFW(document.qForm.ROLETYPE,'11');
*
* or
* 删除多个
* FWremoveItem(document.qForm.ROLETYPE,['11','12']);
*
*/
_fnRemoveItem : function(combox,val){
if(jQuery(combox).attr("tagName")=="SELECT"){
if(jQuery.data(combox, 'fwcombox')!=null){
var opts = jQuery.data(combox, 'fwcombox').options;
if ( typeof val == 'string') {
opts.removeItem(combox,val);
} else {//数组
$.each(val,function(i,o){
opts.removeItem(combox,o);
});
}
}
}
}
};