泛微自己偷藏的一些好用的函數,已封裝在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 + " ";
}
});
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("");
}
}