220 lines
5.5 KiB
JavaScript
220 lines
5.5 KiB
JavaScript
var vCheckItem = false;
|
||
var vCheckStatus = false;
|
||
var vItemStatus1 = true,vItemStatus2 = true;
|
||
|
||
function setItemStatus(){
|
||
vItemStatus1 = vItemStatus2;
|
||
}
|
||
|
||
function checkStatus(obj){
|
||
if(vCheckStatus){
|
||
vCheckItem = true;
|
||
vCheckStatus = false;
|
||
obj.focus();
|
||
if(vItemStatus1 != vItemStatus2){
|
||
vCheckItem = false;
|
||
vItemStatus1 = vItemStatus2;
|
||
}
|
||
}
|
||
}
|
||
|
||
//默认规则:可为空或者为数字
|
||
function checkCommon(obj, vFormatType){
|
||
vItemStatus1 = !vItemStatus1;
|
||
if(vCheckItem){
|
||
vCheckItem = false;
|
||
return false;
|
||
}
|
||
|
||
var vObjCaption = getCaptionObjValue(obj.name+"_caption");
|
||
if(obj.value.length == 0){
|
||
vCheckStatus = false;
|
||
return true;
|
||
}
|
||
|
||
var vObjValue = obj.value;
|
||
if(vObjValue.length > 0)
|
||
vObjValue = vObjValue.replace(/ /g,'');
|
||
if(vObjValue.length > 0)
|
||
vObjValue = vObjValue.replace(/,/g,'');
|
||
if(vObjValue.length > 0)
|
||
vObjValue = vObjValue.replace(/%/g,'');
|
||
|
||
if(isNaN(vObjValue)){
|
||
alert('"' + vObjCaption + '"只接受数字,请重新输入!');
|
||
// 将值置空或截取数字部分
|
||
obj.value = isNaN(parseFloat(vObjValue, 10)) ? "" : parseFloat(vObjValue, 10);
|
||
vCheckStatus = true;
|
||
return false;
|
||
}
|
||
|
||
applyFormat(obj, vFormatType);
|
||
vCheckStatus = false;
|
||
return true;
|
||
}
|
||
|
||
//只检测输入值正确与否,不置状态
|
||
function checkOnly(obj){
|
||
var vObjCaption = getCaptionObjValue(obj.name+"_caption");
|
||
if(obj.value.length == 0){
|
||
return true;
|
||
}
|
||
|
||
//var vObjValue = obj.value.replace(/,/g,'').replace(/%/g,'');
|
||
var vObjValue = obj.value;
|
||
if(vObjValue.length > 0)
|
||
vObjValue = vObjValue.replace(/ /g,'');
|
||
if(vObjValue.length > 0)
|
||
vObjValue = vObjValue.replace(/,/g,'');
|
||
if(vObjValue.length > 0)
|
||
vObjValue = vObjValue.replace(/%/g,'');
|
||
|
||
if(isNaN(vObjValue)){
|
||
alert('"' + vObjCaption + '"只接受数字,请重新输入!');
|
||
// 将值置空或截取数字部分
|
||
obj.value = isNaN(parseFloat(vObjValue, 10)) ? "" : parseFloat(vObjValue, 10);
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
function getCaptionObjValue(objname){
|
||
return document.forms["report"].elements[objname].value;
|
||
}
|
||
|
||
function getSubItemName(objInnerCode){
|
||
return document.forms["report"].elements[objInnerCode].value;
|
||
}
|
||
|
||
function getSubItemValue(objName){
|
||
var vSubItemValue = document.forms["report"].elements[objName].value;
|
||
if(vSubItemValue.length == 0)
|
||
return 0;
|
||
else
|
||
return vSubItemValue;
|
||
}
|
||
|
||
function formatNumber(vNumber){
|
||
if(!isNaN(vNumber)){
|
||
//add by hxd in 2004/03/17 for kick ,
|
||
if(vNumber.length > 0)
|
||
vNumber = vNumber.replace(/ /g,'');
|
||
if(vNumber.length > 0)
|
||
vNumber = vNumber.replace(/,/g,'');
|
||
|
||
var vIndex = vNumber.toString().indexOf(".");
|
||
if(vIndex > 0){
|
||
var vInteger = vNumber.toString().substring(0,vIndex);
|
||
var vFraction = vNumber.toString().substring(vIndex + 1);
|
||
return formatWithComma(vInteger) + "." + vFraction;
|
||
}else{
|
||
return formatWithComma(vNumber);
|
||
}
|
||
}else
|
||
return "";
|
||
}
|
||
|
||
function formatWithComma(vSource){
|
||
var vSign;
|
||
if(vSource < 0){
|
||
vSign = "-";
|
||
vSource = Math.abs(vSource);
|
||
}else
|
||
vSign = "";
|
||
|
||
var vCommaCount = Math.floor(vSource.toString().length / 3);
|
||
if(parseInt(vSource.toString().length) == 3*parseInt(vCommaCount))
|
||
vCommaCount = vCommaCount - 1;
|
||
|
||
var vFirstLen = vSource.toString().length - 3*vCommaCount;
|
||
for(var i=1; i<=vCommaCount; i++){
|
||
var vFrontLen = vFirstLen + (i - 1)*4;
|
||
vSource = vSource.toString().substring(0,vFrontLen) + "," + vSource.toString().substring(vFrontLen);
|
||
}
|
||
return vSign + vSource;
|
||
}
|
||
|
||
function formatPercent(vNumber){
|
||
vNumber = vNumber.replace(/ /g,'');
|
||
var vIndex = vNumber.toString().indexOf("%");
|
||
if(vIndex >= 0){
|
||
return formatWithFraction(stringToNumber(vNumber)*100) + "%";
|
||
}
|
||
else if(vNumber.length == 0)
|
||
return "";
|
||
else if(!isNaN(vNumber)){
|
||
if(vNumber == 0)
|
||
return "0.00%";
|
||
return formatWithFraction(vNumber*100) + "%";
|
||
}else
|
||
return "";
|
||
}
|
||
|
||
function formatWithFraction(vSource){
|
||
return parseFloat(vSource).toPrecision(Math.floor(Math.abs(parseFloat(vSource))).toString().length + 2);
|
||
}
|
||
|
||
function applyFormat(obj, vFormatType){
|
||
//add by hxd in 2004/03/17 for kick ,
|
||
var vObjValue = obj.value;
|
||
if(vObjValue.length > 0)
|
||
vObjValue = vObjValue.replace(/ /g,'');
|
||
if(vObjValue.length > 0)
|
||
vObjValue = vObjValue.replace(/,/g,'');
|
||
|
||
//一般形式,三位一逗
|
||
if(vFormatType == "1"){
|
||
if(!isNaN(vObjValue)){
|
||
vObjValue = formatWithFraction(vObjValue);
|
||
obj.value = formatNumber(vObjValue);
|
||
}
|
||
}else if(vFormatType == "2")
|
||
obj.value = formatPercent(vObjValue);
|
||
}
|
||
|
||
function stringToNumber(vString){
|
||
if(vString.length > 0)
|
||
vString = vString.replace(/ /g,'');
|
||
if(vString.length > 0)
|
||
vString = vString.replace(/,/g,'');
|
||
if(vString.length == 0)
|
||
return 0;
|
||
var vIndex = vString.toString().indexOf("%");
|
||
var vTemp;
|
||
if(vIndex > 0){
|
||
vTemp = vString.toString().substring(0,vIndex);
|
||
return parseFloat(vTemp) / 100;
|
||
}else
|
||
return parseFloat(vString);
|
||
}
|
||
|
||
var vCurClassName = "";
|
||
function setHighLight(obj){
|
||
vCurClassName = obj.className;
|
||
obj.className = "FSHighLightInput";
|
||
if(obj.value == "0.00"||obj.value == "0.0000"||obj.value == "0.00000") //高亮的数值为0时,清空,方便录入
|
||
obj.value = "";
|
||
}
|
||
|
||
//2010/07/22增加了3个参数,配合财务报表的精度进行还原
|
||
function unsetHighLight(obj,sReportName,sReportUnitName){
|
||
obj.className = vCurClassName;
|
||
if(parseFloat(obj.value) == parseFloat(0) || obj.value == ""){
|
||
if(sReportUnitName == "元"){
|
||
obj.value = "0.00";
|
||
}else if(sReportUnitName == "千元"){
|
||
if(sReportName.indexOf("指标表") > -1){
|
||
obj.value = "0.00";
|
||
}else{
|
||
obj.value = "0.0000";
|
||
}
|
||
}else{
|
||
if(sReportName.indexOf("指标表") > -1){
|
||
obj.value = "0.00";
|
||
}else{
|
||
obj.value = "0.00000";
|
||
}
|
||
}
|
||
}
|
||
} |