/** * @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.fnFilter('aform.XB','1'); * 使用方法2: var arr=[]; * arr[0] = '1'; * arr[1] = '2'; * CFW.oGt.fnFilter('aform.XB',arr); * */ fnFilter : function(oSelectName, sOptValues, iOpt){ var that = this; if(typeof oSelectName ==='undefined' || oSelectName =='' || oSelectName ==''){ return; } var evalStr = oSelectName+'.options'; var target = eval(oSelectName); var sObj = eval(evalStr); var selectObj = sObj; var i = 0; //2011-12-03 若使用到过滤则先初始化下拉框,因为下拉框是获取焦点才初始化的 if(jQuery.data(target, 'fwcombox')!=null){ var opts = jQuery.data(target, 'fwcombox').options; opts.dataLoad = false; //20140127 hr added opts.setValue(target,target.value); opts.dataLoad = true; } if(typeof sOptValues == 'string'){ jQuery.each(selectObj,function(){ //20140127 hr added if (this.value == '') { return; } if(this.value==sOptValues){ jQuery(this).remove(); that._fnRemoveItem(target,this.value); } }); }else{ //20100114 wuyingde modified var arr=[]; //提取该删除的对象 jQuery.each(selectObj,function(){ //20140127 hr added if (this.value == '') { return; } var rst=jQuery.inArray(this.value,sOptValues); if(rst!=-1&&iOpt!=-1){ arr.push(this); that._fnRemoveItem(target,this.value); }else if(rst==-1&&-1==iOpt){ arr.push(this); that._fnRemoveItem(target,this.value); } }); //一次性删除 jQuery(arr).remove(); } }, /** *功能简述: 设置复选框(checkbox)控件为选中状态。 *功能详细说明:将指定单记录表单中的部分(或者所有)的复选框设置为选中状态。 *例如:将JSP页面上aform表单内的所有的checkbox复选框选中,可以参考使用方法1, *只需要设置某个复选框为选中状态时,则需要在使用方法1中加入第二个参数,即:checkbox名称。 *@param oOpform(必需) :单记录表单name属性的值,即:form的名称 *@param sChkName :复选框名称(可选),如果不提供这个参数,将选中状表单中所有多选框。 *
	     *使用方法举例:
	     *    使用方法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); }); } } } } };