ecology8常用內置函數


泛微自己偷藏的一些好用的函數,已封裝在e8前端中,直接調用即可:

/**
 * 日期字段選擇限制范圍
 * @param {fieldid} 	日期字段ID
 * @param {floorday} 	下限天數(與當前日期比較),空值代表不限制
 * @param {upperday} 	上限天數(與當前日期比較),空值代表不限制
 * @return 返回true表示在范圍內,false表示超出限定范圍或日期置為空
 */
function cus_judgeDateRange(fieldid, floorday, upperday){
	var fieldObj = jQuery("input[name="+fieldid+"]");
	if(fieldObj.size() == 0)
		return false;
	var fieldval = fieldObj.val();
	if(!!!fieldval)		
		return false;
	floorday = (floorday === "" ? -99999 : parseInt(floorday));
	upperday = (upperday === "" ? 99999 : parseInt(upperday));
	var curdate = new Date();
	var defdate = curdate.getFullYear()+"-"+(curdate.getMonth()+1)+"-"+curdate.getDate();
	var diffdays = (new Date(fieldval.replace(/-/g, "/")).getTime() - new Date(defdate.replace(/-/g, "/")).getTime())/(24*3600*1000);
	diffdays = Math.ceil(diffdays);
	if(diffdays >= floorday && diffdays <= upperday)
		return true;
	else
		return false;
}

/**
 * 計算時間差
 * @param {begfields} 開始時間
 * @param {endfields} 結束時間
 * @param {unit} 	計量結果單位1(天)、2(小時)、3(分鍾)、4(秒),默認為天
 * @param {digit} 	計算結果保留小數位數,默認2位小數
 * @return 以endfields字段值減去beginfields字段值得到時間差值
 * 注:begfields/endfields結構,可為單獨日期字段、單獨時間字段、日期+時間組合字段(以英文逗號隔開);日期字段空值默認取今天,時間字段空值默認為00:00
 */
function cus_CalTimeDiff(begfields, endfields, unit, digit){
	if(!!!begfields || !!!endfields)
		return "ParamsError";
	var diffmillsecond = cus_GetTimeDiffMillSecond(begfields, endfields);
	var diffsecond = diffmillsecond/1000;
	unit = !!unit ? parseInt(unit) : 1;
	digit = (!!digit || digit == 0) ? parseInt(digit) : 2;
	var retdiff = 0;
	if(unit === 1)
		retdiff = diffsecond/(3600*24);
	else if(unit === 2)
		retdiff = diffsecond/3600;
	else if(unit === 3)
		retdiff = diffsecond/60;
	else if(unit === 4)
		retdiff = diffsecond;
	if(digit === 0)
		retdiff = Math.floor(retdiff);	//向下取整
	else
		retdiff = retdiff.toFixed(digit);
	return retdiff;
}

/**
 * 比較timefield1與timefield2兩字段時間大小
 * @param {timefield1} 字段1(開始時間)
 * @param {timefield2} 字段2(結束時間)
 * @return 返回true表示timefield2較大,false表示timefield1較大或相等
 * 注:timefield1/timefield2結構,可為單獨日期字段、單獨時間字段、日期+時間組合字段(以英文逗號隔開);日期字段空值默認取今天,時間字段空值默認為00:00
 */
function cus_CompareTime(timefield1, timefield2){
	var diffmillsecond = cus_GetTimeDiffMillSecond(timefield1, timefield2);
	return diffmillsecond > 0;
}

//計算兩時間字段相差毫秒數
function cus_GetTimeDiffMillSecond(field1, field2){
	var timeval1 = cus_getTimeValueByField(field1);
	var timeval2 = cus_getTimeValueByField(field2);
	var diffmillsecond = new Date(timeval2.replace(/-/g, "/")).getTime() - new Date(timeval1.replace(/-/g,"/")).getTime();
	return diffmillsecond;
}

//根據日期/時間字段ID取標准格式時間值
function cus_getTimeValueByField(fields){
	var timeval;
	var fieldArr = fields.split(",");
	if(fieldArr.length === 1)
		timeval = jQuery("input[name="+fieldArr[0]+"]").val();
	else if(fieldArr.length > 1)
		timeval = jQuery("input[name="+fieldArr[0]+"]").val() + " " + jQuery("input[name="+fieldArr[1]+"]").val();
	var curdate = new Date();
	var defdate = curdate.getFullYear()+"-"+(curdate.getMonth()+1)+"-"+curdate.getDate();
	if(timeval.indexOf("-") == -1)		timeval = defdate + " " + timeval;
	return timeval;
}

/**
 * 選擇框轉換成Radio框樣式顯示/編輯
 * @param {fields}	字段id集合,以逗號隔開
 * 注:轉換后可能不支持聯動功能,只是轉換樣式顯示/編輯
 */
function cus_ConvertSelectToRadio(fieldids){
	jQuery.each(fieldids.split(","), function(i, fieldid){
		var isdisabled = false;
		var selectObj = jQuery("select[name=dis"+fieldid+"]");
		if(selectObj.size() > 0){
			isdisabled = true;
		}else{
			selectObj = jQuery("select[name="+fieldid+"]");
			if(selectObj.size() == 0)	return true;
		}
		var radioHtml = "";
		selectObj.find("option").each(function(){
			var selval = jQuery(this).val();
			var seltext = jQuery(this).text();
			if(selval != ""){
				radioHtml += '<input type="radio" name="opt'+fieldid+'" value="'+selval+'" ';
				if(jQuery(this).is(":selected"))
					radioHtml += ' checked';
				if(isdisabled)
					radioHtml += ' disabled';
				else
					radioHtml += ' onclick="cus_SyncSelectVal(this)"'
				radioHtml += ' />' + seltext + "&nbsp;&nbsp;";
			}
		});
		selectObj.after(radioHtml);
		selectObj.hide();
		if(isdisabled){
			window.setTimeout(function(){
				selectObj.parent().find("span:not([id])").css("display","none");
			},200);
		}
	})
}

//點擊Radio反向回寫Select框
function cus_SyncSelectVal(vthis){
	var radioname = jQuery(vthis).attr("name");
	var selectObj = jQuery("select[name='"+radioname.substring(3)+"']");
	selectObj.val(jQuery(vthis).val());
	try{
		selectObj.trigger("blur").trigger("change");
	}catch(e){}
}

/**
 * 顯示指定區域
 * @param {areanames} 自定義屬性中設置的name屬性區域集合,多個以逗號隔開
 */
function cus_ShowAreaByName(areanames){
	jQuery.each(areanames.split(","), function(i,value){
		jQuery("[name="+value+"]").show().removeClass("edesign_hide");
	});
}

/**
 * 隱藏指定區域,隱藏的區域不校驗必填
 * @param {areanames} 自定義屬性中設置的name屬性區域集合,多個以逗號隔開
 */
function cus_HideAreaByName(areanames){
	jQuery.each(areanames.split(","), function(i,value){
		jQuery("[name="+value+"]").hide().addClass("edesign_hide");
	});
}

/**
 * 控制明細列隱藏/顯示
 * @param {cusclassname}  列自定義class屬性
 * @param {status}  1為顯示,2為隱藏
 */
function cus_ControlDetailColumnByClass(cusclassname, status){
	if(status === 1)
		jQuery("td."+cusclassname).show().removeClass("edesign_hide");
	else if(status === 2)
		jQuery("td."+cusclassname).hide().addClass("edesign_hide");
}

/**
 * 校驗字段是否必填,不滿足彈出提示
 * @param {fieldid} 需校驗的字段ID,多個以逗號分隔
 * @param {alertmsg} 存在未必填字段時彈出提示信息,空則不提示
 * @return true代表存在未填寫字段,false表示校驗通過
 */
function cus_verifyExistNullField(fieldids, alertmsg){
	var existNullField = false;
	jQuery.each(fieldids.split(","), function(i, fieldid){
		var fieldObj = jQuery("[name="+fieldid+"]");
		if(fieldObj.size() == 0 || fieldObj.is("input[type=checkbox]"))
			return true;
		var fieldval = cus_getFieldValue(fieldid);
		if(fieldval === ""){
			existNullField = true;
			return false;
		}
	})
	if(existNullField && !!alertmsg)
		alert(alertmsg);
	return existNullField;
}

/**
 * 根據字段ID取字段值
 * @param {fieldid} 字段ID
 * @return 字段對應值
 * 注:支持文本、多行文本框、瀏覽框(ID值)、選擇框、check框(選中為1未選中為0)
 */
function cus_getFieldValue(fieldid){
	var fieldObj = jQuery("[name="+fieldid+"]");
	if(fieldObj.size() == 0)	return "";
	var fieldval = "";
	if(fieldObj.is("input[type=checkbox]")){
		if(fieldObj.is(":checked"))
			fieldval = "1";
		else
			fieldval = "0";
	}else if(fieldObj.is("input")){
		fieldval = fieldObj.val();
		if(!!fieldval && fieldObj.attr("datavaluetype") == "5")
			fieldval = fieldval.replace(/,/g,"");
	}else if(fieldObj.is("textarea")){
		fieldval = fieldObj.text();
	}else if(fieldObj.is("select")){
		fieldval = fieldObj.find("option:selected").val();
	}
	return fieldval;
}

/**
 * 給文本字段賦值,支持只讀/編輯情況
 * @param {fieldid} 字段ID
 * @param {fieldvalue}	字段值 
 */
function cus_setInputFieldValue(fieldid, fieldvalue){
	var fieldObj = jQuery("input[name="+fieldid+"]");
	if(fieldObj.size() == 0)	return;
	fieldObj.val(fieldvalue);
	if(fieldObj.attr("type")=="hidden"){		//只讀
		jQuery("span#"+fieldid+"span").text(fieldvalue);
	}else{
		if(!!fieldvalue)	//去必填標示
			jQuery("span#"+fieldid+"span").text("");
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM