📄 function.js
字号:
//****************************************************************************
//【版权所有·尊重他人创作】
// History:
// Created by 郭宝华(bob guo), bhguo@163.com, 2003.12.17
//****************************************************************************
//数据表树中用于识别哪个部分的变量
var SheetInfor_ID = 1
var SheetStructure_ID = 2
var SheetReport_ID = 3
var SheetRole_ID = 4
var SheetMail_ID = 5
var SheetTable_ID = 6
var SheetRelation_ID = 7
//字典树中用于识别哪个部分的变量
var DictInfor_ID = 1
var DictItem_ID = 2
//数据字段类型常量
var DataType_Command = 0 //非数据,系统命令
var DataType_Number = 1 //数字
var DataType_Text = 2 //文字
var DataType_TextArea = 3 //文字段
var DataType_Date = 4 //日期
var DataType_DateAndTime = 5 //日期和时间
var DataType_Option = 6 //下拉框
var DataType_Email = 7 //email
var DataType_HyperLink = 8 //超链
var DataType_Attach = 9 //附件
var DataType_Counter = 10 //自动编号
var DataType_Checkbox = 11 //勾选框
var NumberMaxLen = 15 //最多允许用户输入的有效位数,如:123456789012.34
//公式选项
var FormulaType_No = 1 //一般字段
var FormulaType_Simple = 2 //简单数值计算
var FormulaType_Condition = 3 //条件数值计算
var FormulaType_SimpleDateDiff = 4 //简单日期间隔
var FormulaType_ConditionDateDiff = 5 //条件日期间隔
var FormulaType_SimpleDateAdd = 6 //简单日期计算
var FormulaType_ConditionDateAdd = 7 //条件日期计算
var FormulaType_SimpleText = 8 //简单文字拼接
var FormulaType_ConditionText = 9 //条件文字拼接
var FormulaType_ConditionOption = 10 //自动推定选项
//公式字串的分隔符
var ConItemSep=String.fromCharCode(5);
var FormulaSep=String.fromCharCode(3);
var ItemSep=String.fromCharCode(2);
var GroupSep = String.fromCharCode(1) //group seperator
//颜色选项
var FieldColorType_No = 1 //未设置
var FieldColorType_Condition = 2 //按条件选用颜色
//尾数处理选项
var HowRound_4Cut5Step = 1 //四舍五入
var HowRound_Cut = 2 //截断
var HowRound_TailStep = 3 //见尾即进
//图表类型
var Chart_Bar = 1
var Chart_Line = 2
var Chart_Pie = 3
//引用字段的引用时机
var RefTime_Always = 1 //始终引用其数据;
var RefTime_CanModify = 2 //引用后可自由修改
//记录数作为一个统计字段呈现在用户设定界面,赋给一个特殊的FieldID
var RecordCount_ID = 207
var RecordCount_Caption = "记录数"
//各数据类型是否有范围概念
var DataType_HasRange = new Array(1,0,0,1,1,0,0,0,0,0,0);
//各数据类型的本真类型,,只有日期<-->日期和时间认作是相同的类型
var DataType_Core = new Array(1,2,3,4,4,5,6,7,8,2,9);
//各数据类型的标题,应与数据库中的 Option203 一致
var DataType_Caption = new Array("数值","文字","文字段","日期","日期和时间","下拉框","Email","超链","附件","自动编号","勾选框")
var FldMaxSize = 120 //用户可以设定的字段的最大长度
//系统字段、系统表的起始编号,用户字定义的应小于这个数量
var SystemFrom_ID = 201
//数据表操作的最小最大编号
var SheetOperationMin=1
var SheetOperationMax=100
var MaxPageSize = 100 //每页最大记录数
//拼写Javascript 端object名称用的特征字符
var JoinChar = "A"
//页面上不要打印的区域
var NoPrintStart="<!--NoPrintStart-->";
var NoPrintEnd="<!--NoPrintEnd-->";
//提醒计划类型
var RemindPlan_OnceOnly = 1
var RemindPlan_PerHour = 2
var RemindPlan_PerDay = 3
var RemindPlan_PerWeek = 4
var RemindPlan_PerMonth = 5
var RemindPlan_BirthDay = 6
//系统内部短信组别
var MsgGroupReceived_ID=1
var MsgGroupSended_ID=2
var MsgGroupDeleted_ID=3
//设置提醒模板时选择用户的“所有用户”
var AllUser_ID = 0
var AllUser_Caption = "所有用户"
var browser = navigator.appName;
var ErrorMessage;
function MoveListItem(From,To)
{
var FromIndex,FromCount,ToIndex,ToCount;
FromIndex=From.selectedIndex
FromCount=From.length
if(FromIndex!=-1)
{
//获得待移动的项目
var ValueFrom,TextFrom,ValueTo,TextTo
ValueFrom=From.options[FromIndex].value
TextFrom=From.options[FromIndex].text
//向待插入的list插入待移动项目
var ToCount=To.length
To.options[ToCount]=new Option("temp",1)
for (var i=0;i<ToCount;i++)
{
//根据名称寻找正序的插入位置
TextTo=From.options[i].text
if(TextFrom<=TextTo)
{
var j= ToCount
while (j>i)
{
To.options[j].value=To.options[j-1].value
To.options[j].text=To.options[j-1].text
j=j-1
}
break
}
}
//插入位置为i
To.options[i].value=ValueFrom
To.options[i].text=TextFrom
To.selectedIndex=i
//在可选list中去掉选中的项目
for (var i=FromIndex;i<FromCount-1;i++)
{
From.options[i].value=From.options[i+1].value
From.options[i].text=From.options[i+1].text
}
From.length=FromCount-1
if(From.length>0)
{
if(FromIndex>=From.length)
{
From.selectedIndex=FromIndex-1
}
else
{
From.selectedIndex=FromIndex
}
}
else
{
From.selectedIndex=-1
}
}
else
{
if(FromCount>0)
{
alert("您要选择哪个列表项?请选择。");
}
else
{
alert("列表空,没有可选列表项。");
}
}
}
//数据类型、数值范围合法性判断
function DataCheck(Caption,Type,Value,RangeFrom,RangeTo)
{
switch (Type)
{
case DataType_Number:
if (!isEmpty(Value))
{
Value=Value.replace(/,/g,''); //去掉逗号
if(!isNumber(Value))
{
alert(Caption + "输入不正确,请输入数字。");
return(false);
}
else
{
if(!isEmpty(RangeFrom))
{
RangeFrom=RangeFrom.replace(/,/g,''); //去掉逗号
if(parseFloat(Value)<parseFloat(RangeFrom))
{
alert(Caption + "输入的数值范围不正确,大小颠倒,请更正。");
return(false);
}
}
if(!isEmpty(RangeTo))
{
RangeTo=RangeTo.replace(/,/g,''); //去掉逗号
if(parseFloat(Value)>parseFloat(RangeTo))
{
alert(Caption + "输入的数值范围不正确,大小颠倒,请更正。");
return(false);
}
}
Value=replace(Value,'-',''); //去掉符号
Value=replace(Value,'+',''); //去掉符号
Value=replace(Value,'.',''); //去掉小数点
Value=JTrim(Value)
if(Value.length>NumberMaxLen)
{
alert(Caption + "输入的数值太长,最多容纳" + NumberMaxLen + "位有效数字,请更正。");
return(false);
}
}
}
break;
case DataType_Date:
if (!isEmpty(Value))
{
if(!isValidDate(Value))
{
alert(Caption + "输入不正确。\n" + ErrorMessage);
return(false);
}
else
{
if(!isEmpty(RangeFrom))
{
if(isValidDatePeriod(Value,RangeFrom)==1)
{
alert(Caption + "输入的日期范围不正确,前后颠倒,请更正。");
return(false);
}
}
if(!isEmpty(RangeTo))
{
if(isValidDatePeriod(RangeTo,Value)==1)
{
alert(Caption + "输入的日期范围不正确,前后颠倒,请更正。");
return(false);
}
}
}
}
break;
case DataType_DateAndTime:
if (!isEmpty(Value))
{
if(!isValidDateAndTime(Value))
{
alert(Caption + "输入不正确。\n" + ErrorMessage);
return(false);
}
else
{
if(!isEmpty(RangeFrom))
{
if(isValidDateAndTimePeriod(Value,RangeFrom)==1)
{
alert(Caption + "输入的日期时间范围不正确,前后颠倒,请更正。");
return(false);
}
}
if(!isEmpty(RangeTo))
{
if(isValidDateAndTimePeriod(RangeTo,Value)==1)
{
alert(Caption + "输入的日期时间范围不正确,前后颠倒,请更正。");
return(false);
}
}
}
}
break;
case DataType_Email:
if (!isEmpty(Value))
{
if(!isVaildEmail(Value))
{
alert(Caption + "输入不正确。\n" + ErrorMessage);
return(false);
}
}
break;
case DataType_Attach:
break;
}
return(true);
}
function isNumber( str )
{
var num = JTrim( str );
if ( num == "" || isNaN(num))
{
return (false);
}
return (true);
}
//将日期型数据转换成适合的格式
//参数:
//ToType,要求的格式,2种:DataType_Date,或 DataType_DateAndTime
//AppendEndTime,当要求的格式为 DataType_DateAndTime且未填写时间时起作用,
//如果为1,补 23:59:59,否则补 00:00:00
//Value,数值
//返回参数:
//History:
//Created by 郭宝华(bob guo) 2004 6 23
function DateConvert(ToType,AppendEndTime,Value)
{
var OldValue,NewValue;
var parts;
Value=Value.replace(/ /g,' '); //双空格以上的,改为单空格
OldValue=Value;
if(ToType==DataType_Date)
{
if(isValidDateAndTime(Value))
{
parts=strDateAndTime.split(" ");
NewValue=parts[0];
return NewValue;
}
else
{
return OldValue;
}
}
else
{
if(isValidDate(Value))
{
if(AppendEndTime==1)
NewValue=Value + " 23:59:59";
else
NewValue=Value + " 00:00:00";
return NewValue;
}
else
{
return OldValue;
}
}
}
//格式化数值类型的数据
//参数:
//TypeFormat,要求的格式。从左致右,各位的意义分别是:小数位数,是否使用千分位,尾数处置(1--四舍五入,2--截断,3--见尾即进)
//Value,数值
//返回参数:
//History:
//Created by 郭宝华(bob guo) 2004 2 4
function FormatNumber(TypeFormat, Value)
{
var strInt,strDecimal;
var OldValue,NewValue;
var decimalLength,NeedComma,HowRound
OldValue=Value;
Value=Value.replace(/,/g,''); //去掉逗号
Value=Value.replace(/ /g,''); //去掉空格
//如果不是数字,返回原值
if(isNumber(Value)!=true)
{
return(OldValue);
}
else
{
if(TypeFormat.length != 3 || isNumber(TypeFormat)!=true)
//如果格式字串无法解释,则不做格式转换,返回原值
return(OldValue);
else
{
//解析要求的格式信息
decimalLength=parseInt(TypeFormat.charAt(0))
NeedComma=parseInt(TypeFormat.charAt(1));
HowRound=parseInt(TypeFormat.charAt(2));
//获得原整数部分、小数部分
var parts
parts=Value.split(".");
if(parts.length==2)
{
strInt=parts[0];
strDecimal=parts[1];
}
else
{
if(parts.length==1)
{
strInt=parts[0];
strDecimal="";
}
}
//多余尾数的舍入
if(strDecimal!="" && strDecimal.length>decimalLength)
{
var tempDecimal,Old,OldInt,NewInt;
tempDecimal="."+strDecimal;
Old=Math.pow(10,decimalLength) * parseFloat(tempDecimal);
if(HowRound==HowRound_4Cut5Step)
{
NewInt=Math.round(Old);
if(decimalLength>0)
strDecimal=NewInt.toString();
else
if(NewInt>0)
{
strInt=parseInt(strInt)+1;
strInt=strInt.toString();
}
}
if(HowRound==HowRound_Cut)
if(decimalLength>0)
strDecimal=tempDecimal.substr(1,decimalLength);
else
strDecimal="";
if(HowRound==HowRound_TailStep)
if(parseFloat(tempDecimal.substr(decimalLength+1,1))>=1)
{
if(decimalLength>0)
{
NewInt=parseFloat(tempDecimal.substr(1,decimalLength))+1;
strDecimal=NewInt.toString();
}
else
{
strInt=parseInt(strInt)+1;
strInt=strInt.toString();
}
}
}
//处理整数部分的千分位
var intLength,strNewInt,strRemain;
strNewInt=strInt;
if(NeedComma == 1)
{
intLength=strInt.length;
if(intLength>3)
{
strNewInt="";
for(var i=3;i<intLength;i=i+3)
{
strRemain=strInt.slice(0,intLength-i);
if(isNumber(strRemain)==true)
{
strNewInt= "," + strInt.slice(intLength-i,intLength-i+3) + strNewInt;
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -