//----------------------------------------------------------
// Liana 3.0 系統(tǒng)JS公用函數(shù)庫
//
//----------------------------------------------------------
//----------------------------------------------------------
// 函數(shù)名:卡號域鍵盤輸入控制函數(shù)
// 描述:限制鍵盤輸入,卡號只許輸入數(shù)字,及功能鍵(退格[<-]、del[del]、方向鍵[右]、方向鍵[左])
// 示例:<input type="text" name="a" value="" onKeyDown="inputCardNo();">
// author : lixuefeng
// create date: 2005-11-03
// 修改記錄:
// 2005-11-04:增加小鍵盤數(shù)字輸入功能
// 2005-11-04:屏蔽shift健、ctrl健、alt健
//----------------------------------------------------------
function inputCardNo(){
if(event.keyCode==9)
{
event.returnValue=true;
}
else
{
if(event.shiftKey || event.ctrlKey || event.altKey){
event.returnValue=false;
}
if(event.keyCode!=8 && event.keyCode !=37 && event.keyCode !=39 && event.keyCode !=46){
if(event.keyCode < 48||(event.keyCode > 57 && event.keyCode<96) || event.keyCode>105){
event.returnValue=false;
}
}
}
}
// 得到一個文本框控件的當前光標位置
function getPos(obj){
obj.focus();
var workRange=document.selection.createRange();
obj.select();
var allRange=document.selection.createRange();
workRange.setEndPoint("StartToStart",allRange);
var len=workRange.text.length;
workRange.collapse(false);
workRange.select();
return len;
}
// 設(shè)置一個文本框控件的當前光標位置
function setCursor(obj,num){
range=obj.createTextRange();
range.collapse(true);
range.moveStart('character',num);
range.select();
}
//----------------------------------------------------------
// 金額域輸入控制函數(shù)
// 示例:
// 1.控制金額域只能輸入合法的金額數(shù)值(不含角分)
// <input type="text" name="a" value="" onKeyUp="inputMoney3(this,0)" onblur="inputMoney(this,0)">
// 2.控制金額域只能輸入合法的金額數(shù)值(含角分)
// <input type="text" name="a" value="" onKeyUp="inputMoney3(this,1)" onblur="inputMoney(this,1)">
// 注意:在引用本文件前,請確定已經(jīng)引用了Liana 3.0 系統(tǒng)JS公用函數(shù)庫 (public.js)
// author : lixuefeng
// date:2005-10-26
// 修改歷史:
// 2005-10-29:增加控制光標移動的功能函數(shù),函數(shù)inputMoney3(obj,flg)中添加了該控制。
// 由<input type="text" name="a" value="" onKeyUp="inputMoney(this,1)" onblur="inputMoney(this,1)">
// 改為:
// <input type="text" name="a" value="" onKeyUp="inputMoney3(this,1)" onblur="inputMoney(this,1)">
// 可消除光標不能通過鍵盤移動的bug和不能在金額中間連續(xù)輸入數(shù)字的bug
// 2005-11-08:控制整數(shù)位不大于12位。
//----------------------------------------------------------
//----------------------------------------------------------
// 檢查變量是否是合法的金額
// 返回值:
// true: 合法
// false: 不合法
//----------------------------------------------------------
function moneyCheck(str) {
var length1 , i , j;
var string1="";
str = javaTrim(str);
string1=str;
length1 = string1.length;
if (str.charAt(0)=="0" ){
if (length1 == 2){
if (!(str.charAt(1)==".")){
//alert("金額首位不能為0,請重新填寫!");
return(false);
}
}
}
if(str.charAt(0)==".")
return false;
j=0;
for (i = 0 ; i < length1 ; i++) { //判斷每位數(shù)字
if(isNaN(parseInt(str.charAt(i),10))) {
if(str.charAt(i) != "."){
return(false);
}
else{
j++;
if(length1 - i > 3 ){
return(false);}
}
}
}
if(j > 1) {
return(false);
}
if(str.length>12 ){//判斷整數(shù)位是否大于12位
var intlen = str.indexOf(".");
if(intlen<0 || intlen>12){
return (false);
}
}
return (true);
}
//----------------------------------------------------------
// 控制輸入域只能輸入金額如1.00、1.0、1等
// 變量:obj -輸入域?qū)ο?;flg - 是否允許輸入角分(0:不允許;1:允許)
// 返回值:
//----------------------------------------------------------
var strLast = "";//上次輸入的字符串
var strNow = "";//本次輸入的字符串
function inputMoney(obj,flg){
//var pos = getPos(obj);
strNow = obj.value;
var isIntChar = "";
if(flg==0){
isIntChar = RegExp(/^[0-9]+$/);
}
else {
isIntChar = RegExp(/^[.0-9]+$/);
}
if(strNow.length>0 && !isIntChar.test(strNow))
{
obj.value=strLast;
//setCursor(obj,pos-1);
return;
}
if(!moneyCheck(strNow)){
obj.value=strLast;
//setCursor(obj,pos-1);
return;
}
obj.value=strNow;
/*
var num ;
if(strNow.length-strLast.length>0){
num=pos + strNow.length-strLast.length-1;
}
else{
num=pos;
}
setCursor(obj,num);
*/
strLast = strNow;
}
function inputMoney3(obj,flg){
var pos = getPos(obj);
strNow = obj.value;
var isIntChar = "";
if(flg==0){
isIntChar = RegExp(/^[0-9]+$/);
}
else {
isIntChar = RegExp(/^[.0-9]+$/);
}
if(strNow.length>0 && !isIntChar.test(strNow))
{
obj.value=strLast;
setCursor(obj,pos-1);
return;
}
if(!moneyCheck(strNow)){
obj.value=strLast;
setCursor(obj,pos-1);
return;
}
obj.value=strNow;
var num ;
if(strNow.length-strLast.length>0){
num=pos + strNow.length-strLast.length-1;
}
else{
num=pos;
}
setCursor(obj,num);
strLast = strNow;
}
//----------------------------------------------------------
// 檢查變量是否是浮點數(shù)
// 返回值:
// true: 是浮點數(shù)
// false: 不是浮點數(shù)
//----------------------------------------------------------
function isDecimal( s )
{
var isDecimal = RegExp(/^([0-9]+(\.?))?[0-9]+$/);
return ( isDecimal.test(s) );
}
//----------------------------------------------------------
// 判斷輸入的是不是數(shù)字或者字母
// 輸入:theStr 為字符串
// 返回值:true:是false:不是
//----------------------------------------------------------
function isIntChar( s )
{
var isIntChar = RegExp(/^[a-zA-Z0-9]+$/);
return ( isIntChar.test(s) );
}
//----------------------------------------------------------
// 判斷輸入的是不是數(shù)字或者字母或者特殊字符
// 輸入:theStr 為字符串
// 返回值:true:是false:不是
//----------------------------------------------------------
function isIntChar2( s )
{
var isIntChar2 = RegExp(/^[a-zA-Z0-9(\_)(\-)(\*)(\&)(\%)(\$)(\#)(\@)(\!)(\~)(\^)(\()(\))]+$/);
return ( isIntChar2.test(s) );
}
/**
*判斷是否合法昵稱(登錄名)
**/
function isLegalNickName(s)
{
var isNickName = RegExp(/^[a-zA-Z0-9\_\.\@]+$/);
return ( isNickName.test(s) );
}
//----------------------------------------------------------
// 對數(shù)據(jù)域重新進行編碼
// 輸入:數(shù)據(jù)域
// 返回值:
// 編碼后的數(shù)據(jù)域
//----------------------------------------------------------
function encode(s)
{
if(s == null )
return s;
if(s.length == 0)
return s;
var ret = "";
for(i=0;i<s.length;i++)
{
var c = s.substr(i,1);
var ts = escape(c);
if(ts.substring(0,2) == "%u")
{
ret = ret + ts.replace("%u","@@");
} else {
ret = ret + c;
}
}
return ret;
}
//----------------------------------------------------------
// 檢驗賬號合法性
// 輸入:賬號的字符串
// 返回值:
// true:賬號合法
// false:賬號不合法
//----------------------------------------------------------
function validateAccount(account,length)
{
if( isEmpty(account) )
{
alert("賬號不能為空!");
return false;
}
if( !isInteger(account) )
{
alert("賬號必須為數(shù)字!");
return false;
}
if( isShorter(account,length) )
{
alert("賬號長度為"+length+"位!");
return false;
}
return true;
}
//----------------------------------------------------------
// 百分率格式化
// 輸入:0~100間的字符串
// 返回值:
// 格式化后的字符串
//----------------------------------------------------------
function getFmtRate(str)
{
var rate = parseInt(str);
if ( rate > 100 || rate < 0 )
return("-1");
return (rate/100);
}
//----------------------------------------------------------
// 檢查變量是否為空
// 返回值:
// true:為空
// false:不為空
//----------------------------------------------------------
function isEmpty(e)
{
if( trim(e) == "" )
return true;
else
return false;
}
//----------------------------------------------------------
// 去掉字符串前后的空格
// 返回值:
// 去除空格后的字符串
//----------------------------------------------------------
function trim(param) {
if ((vRet = param) == '') { return vRet; }
while (true) {
if (vRet.indexOf (' ') == 0) {
vRet = vRet.substring(1, parseInt(vRet.length));
} else if ((parseInt(vRet.length) != 0) && (vRet.lastIndexOf (' ') == parseInt(vRet.length) - 1)) {
vRet = vRet.substring(0, parseInt(vRet.length) - 1);
} else {
return vRet;
}
}
}
//----------------------------------------------------------
// 檢查輸入文本框中是否包含“|”或“#”非法字符
// 返回值:
// true: 合法
// false: 非法
//----------------------------------------------------------
function isValidText(param) {
if ((param.indexOf('|') >= 0) || (param.indexOf('#') >= 0) ) {
alert("“|”和“#”為系統(tǒng)保留字符,請不要輸入!");
return false;
}
return true;
}
//----------------------------------------------------------
// 檢查變量的長度比給出的長度短
// 返回值:
// true: 變量長度<給出的長度
// false: 變量長度>=給出的長度
//----------------------------------------------------------
function isShorter(str,reqlength)
{
if( str.length<reqlength )
return true;
else
return false;
}
//----------------------------------------------------------
// 檢查變量是否是整數(shù)
// 返回值:
// true: 是整數(shù)
// false: 不是整數(shù)
//----------------------------------------------------------
function isInteger( s )
{
var isInteger = RegExp(/^[0-9]+$/);
return ( isInteger.test(s) );
}
//----------------------------------------------------------
// 檢驗金額
// 返回值:
// true: 合法
// false: 非法
//----------------------------------------------------------
function isMoney(param) {
if ((isNaN(param)) || (parseFloat(param) < 0) || (param.indexOf('.') == 0) || (param.lastIndexOf('.') == param.length - 1)) {
return false;
}
//不支持科學計數(shù)
if(param.indexOf('e') > 0) {
return false;
}
//小數(shù)點后最多只允許保留兩位有效數(shù)字
var docIndex = trim(param).lastIndexOf('.');
if ((docIndex < parseInt(trim(param).length) - 3) && (docIndex >= 0)) {
return false;
}
if (param.charAt(0)=="0" )
{
if (!(param.charAt(1)=="."))
{
return false;
}
}
return true;
}
//----------------------------------------------------------
// 檢驗金額(允許input 0)
// 返回值:
// true: 合法
// false: 非法
// for netpay 20061012 xjk
//----------------------------------------------------------
function isMoney2(param) {
if ((isNaN(param)) || (parseFloat(param) < 0) || (param.indexOf('.') == 0) || (param.lastIndexOf('.') == param.length - 1)) {
return false;
}
//不支持科學計數(shù)
if(param.indexOf('e') > 0) {
return false;
}
//小數(shù)點后最多只允許保留兩位有效數(shù)字
var docIndex = trim(param).lastIndexOf('.');
if ((docIndex < parseInt(trim(param).length) - 3) && (docIndex >= 0)) {
return false;
}
return true;
}
//----------------------------------------------------------
// 檢驗價格
// 返回值:
// true: 合法
// false: 非法
//----------------------------------------------------------
function isPrice(param) {
if ((isNaN(param)) || (parseFloat(param) < 0) || (param.indexOf('.') == 0) || (param.lastIndexOf('.') == param.length - 1)) {
return false;
}
//不支持科學計數(shù)
if(param.indexOf('e') > 0) {
return false;
}
//小數(shù)點后最多只允許保留四位有效數(shù)字
var docIndex = trim(param).lastIndexOf('.');
if ((docIndex < parseInt(trim(param).length) - 5) && (docIndex >= 0)) {
return false;
}
return true;
}
//----------------------------------------------------------
// 檢驗日期是否符合YYYYMMDD的格式
// 返回值:
// true: 日期合法
// false: 日期不合法
//----------------------------------------------------------
function isDate(param) {
var pattern = /^\d+$/;
if ( param.length != 8 ) {
return false;
}
if(!pattern.test(param)) {
return false;
}
sYear = param.substring( 0, 4 );
sMonth = param.substring( 4, 6 );
sDay = param.substring( 6, 8 );
if ( ( eval( sMonth ) < 1 ) || ( eval( sMonth ) > 12 ) ) {
return false;
}
var leapYear = ((( sYear % 4 == 0 ) && ( sYear % 100 != 0 )) || ( sYear % 400 == 0 )) ? true : false;
var monthDay = new Array(12);
monthDay[0] = 31;
monthDay[1] = leapYear ? 29 : 28;
monthDay[2] = 31;
monthDay[3] = 30;
monthDay[4] = 31;
monthDay[5] = 30;
monthDay[6] = 31;
monthDay[7] = 31;
monthDay[8] = 30;
monthDay[9] = 31;
monthDay[10] = 30;
monthDay[11] = 31;
if ( ( eval( sDay ) < 1 ) || ( eval( sDay ) > monthDay[eval(sMonth)-1] ) ) {
return false;
}
return true;
}
//----------------------------------------------------------
// 檢查email合法性
// 返回值:
// true: 合法
// false: 不合法
//----------------------------------------------------------
function isEmail(aEmail) {
var bValidate = RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(aEmail);
if ( bValidate )
{
return true;
}
else
return false;
}
//----------------------------------------------------------
// 選中某個數(shù)據(jù)域
//----------------------------------------------------------
function makeFocus(txtObject) {
txtObject.focus();
txtObject.select();
}
//----------------------------------------------------------
// 金額格式化
// 返回值:
// 格式化后的字符串
//----------------------------------------------------------
function toFmtMoney(str) {
var subAmt = trim(str);
if((subAmt.indexOf(".") == -1)||(subAmt.length == 1)) {
subAmt = subAmt + ".00";
}
if(subAmt.indexOf(".") == (subAmt.length - 2)) {
subAmt = subAmt + "0";
}
if(subAmt.indexOf(".") < (subAmt.length - 3)){
subAmt = subAmt.substr(0, subAmt.indexOf(".") + 3);
}
return (subAmt);
}
//----------------------------------------------------------
// 限制鍵盤輸入,只許輸入數(shù)字
//----------------------------------------------------------
function inputNumber(){
if(event.keyCode < 48||event.keyCode > 57){
event.returnValue=false;
}
}
function disable_Button(name){
name.disabled=1
}
function reload(name1){
name1.reset();
}
//----------------------------------------------------------
//控制text域的最大輸入長度
//用法:onblur="checkLength(this,要控制的長度);",
//----------------------------------------------------------
function checkLength(v,l){
var s = v.value;
var len = 0;
for(i=0;i<s.length;i++){
var c = s.substr(i,1);
var ts = escape(c);
if(ts.substring(0,2) == "%u") {
len+=2;
} else {
len+=1;
}
}
if(l>=len){
return;
}
else{
var aaa=Math.floor(l/2);
alert("該輸入項插入值過長!最多"+l+"個字符或"+aaa+"個漢字。");
v.value = "";
v.focus();
}
}
//----------------------------------------------------------
//控制textarea域的最大輸入長度
//用法:onblur="checkAreaLength(this,要控制的長度);"
//----------------------------------------------------------
function checkAreaLength(v,l){
var s= v.value;
var temlen=0;
var len = 0;
for(i=0;i<s.length;i++){
var c = s.substr(i,1);
var ts = escape(c);
if(ts.substring(0,2) == "%u"){
len+=2;
len+=temlen;
temlen=0;
}
else if(ts.substring(0,3) == "%0D"){
temlen+=1;
}
else if(ts.substring(0,3) == "%0A"){
temlen+=1;
}
else if(ts.substring(0,3) == "%20"){
temlen+=1;
}
else{
len+=1;
len+=temlen;
temlen=0;
}
}
if(len>l){
var aaa=Math.floor(l/2);
alert("該輸入項插入值過長!最多"+l+"個字符或"+aaa+"個漢字。");
v.value = "";
v.focus();
return false;
}
return true;
}
//----------------------------------------------------------
// 通用打印
//----------------------------------------------------------
function commonprint(title,divId,cardNo,branchName,width,height){
//alert("HELLO");
var sarg=new Array();
var sdata=document.all.item(divId);
sarg[0]=title;
text = sdata.outerHTML;
text = text.replace(/border=[^[1|\s]]*([\s|>])/ig,"border=1 style='border-collapse:collapse' bordercolor='#000000'$1");
text = text.replace(/cellSpacing=[^[0|\s]]*([\s|>])/ig,"$1");
text = text.replace(/cellPadding=[^[0|\s]]*([\s|>])/ig,"$1");
text = text.replace(/<TABLE/ig,"<TABLE cellSpacing=0 cellPadding=0");
sarg[1]=text;
sarg[2]=cardNo;
sarg[3]=branchName;
//alert(test);
//alert(sarg[1]);
window.showModalDialog("print.jsp",sarg,"dialogWidth:"+width+"px;dialogHeight:"+height+"px;center:yes;help:no;status:no;resizable:yes");
return;
}
//----------------------------------------------------------
// 對金額進行轉(zhuǎn)換,將金額轉(zhuǎn)換為以元為單位,小數(shù)點后有兩位
// 例:輸入域1234,轉(zhuǎn)換后隱含域為1234.00
// Creation date: (2003-09-12)
// @author: ecc-wangdong
// @version: 1.0
// @param:form, txtmoney, hidmoney
// @param說明:
// FORM名,表現(xiàn)域名稱,隱藏域名稱
// @condition:該表現(xiàn)域已賦初值
//----------------------------------------------------------
function convertToMoney(form,txtmoney,hidmoney){
var tonumber;
var re = /,/g;
var txt_money = eval("document."+form+"."+txtmoney);
var hid_money = eval("document."+form+"."+hidmoney);
if (txt_money.value != ""){
var temp = trim(txt_money.value);
if (temp == ""){
alert("請輸入正確的金額!");
txt_money.value="";
hid_money.value="";
txt_money.focus();
return;
}
}
tonumber = txt_money.value.replace(re,"");
txt_money.value = "";
hid_money.value = "";
if (tonumber !="" && tonumber!=null){
rep = / /g;
var amt = tonumber.replace(rep,"");
for(var j = 0; j < amt.length; j++){
if(isNaN(parseInt(amt.charAt(j),10)) && amt.charAt(j)!="," && amt.charAt(j)!=".") {
alert("請輸入正確的金額!");
txt_money.value="";
hid_money.value="";
txt_money.focus();
return;
}
}
if(amt.indexOf(".")!=amt.lastIndexOf(".")){
alert("請輸入正確的金額!");
txt_money.focus();
return;
}
re = /,/g;
var amt1 = amt.replace(re,"");
var amt2=parseFloat(amt1);
if(amt2<=0){
alert("輸入的金額小于或等于零,請重新輸入!");
txt_money.focus();
return;
}else{ //大于0的正數(shù);
if(amt1.indexOf(".")!=-1){
var str = amt1.substr(amt1.indexOf(".")+1);
if(str.length>2){
alert("輸入的金額小數(shù)點后只能保留兩位,請重新輸入!");
txt_money.focus();
return;
}else if(str.length==1){
amt1=amt1 + "0";
}else if(str.length<1){
amt1=amt1 + "00";
}
}else{
amt1=amt1 + ".00";
}
if(amt1.charAt(0)=='0' && amt1.indexOf(".")!=1){
alert("請輸入正確的金額!");
txt_money.focus();
return;
}
hid_money.value=amt1;
var temp=amt1.substring(0,amt1.indexOf("."));
if (temp.length > 10){
alert("輸入的金額太大,請重新輸入!");
txt_money.focus();
return;
}
txt_money.value=comma(temp) + amt1.substring(amt1.indexOf("."));
return;
}
}
}
//----------------------------------------------------------
// 對金額進行轉(zhuǎn)換,將金額轉(zhuǎn)換為以分為單位
// Creation date: (2003-09-12)
// @author: ecc-wangdong
// @version: 1.0
// @param:form, txtmoney, hidmoney
// @param說明:
// FORM名,表現(xiàn)域名稱,隱藏域名稱
// @condition:該表現(xiàn)域已賦初值
//----------------------------------------------------------
function convertToMoney2(form,txtmoney,hidmoney){
var tonumber;
var re = /,/g;
var txt_money = eval("document."+form+"."+txtmoney);
var hid_money = eval("document."+form+"."+hidmoney);
tonumber = txt_money.value.replace(re,"");
txt_money.value = "";
if (tonumber !="" && tonumber!=null){
rep = / /g;
var amt = tonumber.replace(rep,"");
for(var j = 0; j < amt.length; j++){
if(isNaN(parseInt(amt.charAt(j),10)) && amt.charAt(j)!="," && amt.charAt(j)!=".") {
alert("請輸入正確的金額!");
txt_money.value="";
txt_money.focus();
return;
}
}
if(amt.indexOf(".")!=amt.lastIndexOf(".")){
alert("請輸入正確的金額!");
txt_money.focus();
return;
}
re = /,/g;
var amt1 = amt.replace(re,"");
var amt2=parseFloat(amt1);
if(amt2<0){
alert("輸入的金額小于零,請重新輸入!");
txt_money.focus();
return;
}else{ //大于0的正數(shù);
if(amt1.indexOf(".")!=-1){
var str = amt1.substr(amt1.indexOf(".")+1);
if(str.length>2){
alert("輸入的金額小數(shù)點后只能保留兩位,請重新輸入!");
txt_money.focus();
return;
}else if(str.length==1){
amt1=amt1 + "0";
}else if(str.length<1){
amt1=amt1 + "00";
}
}else{
amt1=amt1 + ".00";
}
if(amt1.charAt(0)=='0' && amt1.indexOf(".")!=1){
alert("請輸入正確的金額!");
txt_money.focus();
return;
}
hid_money.value=amt1.substring(0,amt1.indexOf(".")) + amt1.substr(amt1.indexOf(".")+1);
var temp=amt1.substring(0,amt1.indexOf("."));
if (hid_money.value.length > 18){
alert("金額太大");
txt_money.focus();
return;
}
txt_money.value=comma(temp) + amt1.substring(amt1.indexOf("."));
return;
}
}
}
//---------------------------------------------------------------------------
// 表現(xiàn)形式增加逗號,只對整數(shù)部分做處理,由上一個函數(shù)調(diào)用。
// Creation date: (2003-09-12)
// @author: ecc-handong
// @version: 1.0
// @param:number
// @param說明:需轉(zhuǎn)換數(shù)值
//---------------------------------------------------------------------------
function comma(number) {
number = '' + number;
if (number.length > 3) {
var mod = number.length % 3;
var output = (mod > 0 ? (number.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(number.length / 3); i++) {
if ((mod == 0) && (i == 0))
output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
else
output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
}
else return number;
}
//---------------------------------------------------------------------------
// 表現(xiàn)形式增加逗號,這個可作為單獨使用。
// Creation date: (2003-09-12)
// @author: ecc-wangdong,handong
// @version: 1.0
// @param:number
// @param說明:
// 需轉(zhuǎn)換數(shù)值
//---------------------------------------------------------------------------
function displayComma(str) {
str = '' + str;
if ((str.indexOf("."))!= -1){
str1 = str.substring(0,str.indexOf("."));
str2 = str.substring(str.indexOf("."));
}else{
str1 = str;
}
if (str1.length > 3) {
var mod = str1.length % 3;
var output = (mod > 0 ? (str1.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(str1.length / 3); i++) {
if ((mod == 0) && (i == 0))
output += str1.substring(mod+ 3 * i, mod + 3 * i + 3);
else
output += ',' + str1.substring(mod + 3 * i, mod + 3 * i + 3);
}
if ((str.indexOf("."))!= -1){
output = output + str2;
}
return (output);
}
else return str;
}
//----------------------------------------------------------
// 生成Excel文件并保存
// 輸入?yún)?shù):
// formName:要生成的數(shù)據(jù)所在的form名稱
// tableName:要生成的數(shù)據(jù)所在的table名稱
//----------------------------------------------------------
function exportexcel(formName,tableName){
var oXL = new ActiveXObject("Excel.Application");
oXL.Visible = true;
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var div1=document.all.item(formName);
var table1=div1.all.item(tableName);
var table=new Array();
var retArr = getTableRowsCols(table1);
var rlen=retArr[0];
var clen=retArr[1];
var flagTable=new Array(rlen);
for(var i=0;i<rlen;i++){
flagTable[i]=new Array(clen);
for(var j=0;j<clen;j++){
flagTable[i][j]=0;
}
}
var rowBegin=1, colBegin=1; //導(dǎo)出的表格的起始位置
var c1=oSheet.Cells(rowBegin,colBegin);
var c2=oSheet.Cells(rlen+rowBegin-1,clen+colBegin-1);
oSheet.Range(c1,c2).VerticalAlignment = -4108;
oSheet.Range(c1,c2).HorizontalAlignment = -4108;
exportTable(oSheet, flagTable, table1, rowBegin, colBegin);
oSheet.Range(oSheet.Cells(rowBegin,colBegin),oSheet.Cells(rlen+rowBegin-1,clen+colBegin-1)).EntireColumn.AutoFit();
oXL.UserControl = true;
oXL.Quit();
}
//返回當前表格的行數(shù)和列數(shù)
//參數(shù):objTable, 表格對象
//返回:retArr, retArr[0], 行數(shù);retArr[1], 列數(shù)
function getTableRowsCols(objTable)
{
var rowCnt=0, colCnt=0;
for (var i=0; i<objTable.rows.length; i++) {
var row = objTable.rows[i]; //當前行
var rowRows=1, rowCols=0; //當前行的初始行數(shù)和列數(shù)
for (var j=0; j<row.cells.length; j++) {
var cell = row.cells[j]; //當前單元格
if (cell.firstChild !=null && cell.firstChild.tagName == "TABLE") {
var inRetArr = getTableRowsCols(cell.firstChild);
rowCols +=inRetArr [1];
rowRows = rowRows<inRetArr[0] ? inRetArr[0] : rowRows;
} else { //不是表格
rowCols += parseInt(cell.colSpan);
rowRows = rowRows<parseInt(cell.rowSpan) ? parseInt(cell.rowSpan) : rowRows;
}
}
colCnt = colCnt<rowCols ? rowCols : colCnt;
rowCnt += rowRows;
}
var retArr = new Array();
retArr[0] = rowCnt;
retArr[1] = colCnt;
return retArr;
}
//導(dǎo)出表格
function exportTable(oSheet, flagTable, objTable, rowBegin, colBegin){
var flagRow=0, flagCol=0; //跟蹤當前的表示表中的相對位置
for(var i=0; i<objTable.rows.length; i++) {
var row = objTable.rows[i]; //當前行
flagCol = 0;
var subTableRows = 1; //當前行若有表格,則記錄其中最大的行數(shù)
for (var j=0; j<row.cells.length; j++) {
while (flagTable[rowBegin-1+flagRow][colBegin-1+flagCol]==1) {
flagCol++;
}
var cell=row.cells[j]; //當前單元格
if (cell.firstChild !=null && cell.firstChild.tagName == "TABLE") {
var retArrRows = getTableRowsCols(cell.firstChild)[0];
subTableRows = subTableRows<retArrRows ? retArrRows : subTableRows;
exportTable(oSheet, flagTable, cell.firstChild, rowBegin+flagRow, colBegin+flagCol);
} else {
oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).Font.Bold=1;
var rs=parseInt(cell.rowSpan);
var cs=parseInt(cell.colSpan);
oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).NumberFormatLocal="@";
oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).Value = cell.innerText;
oSheet.Range(oSheet.Cells(rowBegin+flagRow, colBegin+flagCol),oSheet.Cells(rowBegin+flagRow+rs-1,colBegin+flagCol+cs-1)).MergeCells = 1;
//填寫當前單元格在標志表格中的標志
for(var k=0; k<rs; k++) {
for(var l=0; l<cs; l++) {
flagTable[rowBegin-1+flagRow+k][colBegin-1+flagCol+l]=1;
}
}
}
flagCol =flagCol + cs - 1; //加速標志表格的列的移動,因為當前表格已經(jīng)標識了cs個標志單元
}
flagRow += subTableRows;
}
}
//----------------------------------------------------------
// 圖片控制函數(shù)
//----------------------------------------------------------
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-----------------------------
// 檢查時間間隔是否在規(guī)定間隔之內(nèi)
// 輸入:
// startDate/endDate為YYYYMMDD型日期字符串
// interval:間隔,單位為天
// 返回:true 符合要求
// false 不符合要求
//-----------------------------
function dateInterval(startDate,endDate,interval) {
var date1 = new Date(eval(startDate.substring(0,4)),eval(startDate.substring(4,6))-1,eval(startDate.substring(6,8)));
var date2 = new Date(eval(endDate.substring(0,4)),eval(endDate.substring(4,6))-1,eval(endDate.substring(6,8)));
if ( ( date2 - date1 ) / 86400000 > eval(interval) - 1 )
return false;
return true;
}
//-----------------------------
// 返回對話框中的文件路徑
//-----------------------------
function getFilePath(filespec)
{
oldSpec=filespec;
index=filespec.indexOf("\\");
while(index>=0)
{
if(filespec.length>index)
filespec=filespec.substring(index+1);
index=filespec.indexOf("\\");
}
index=filespec.indexOf("/");
while(index>=0)
{
if(filespec.length>index)
filespec=filespec.substring(index+1);
index=filespec.indexOf("/");
}
index=oldSpec.indexOf(filespec);
return oldSpec.substring(0,index);
}
var debug = 0;
/**
* 發(fā)送xml請求
* url: url
* method: Post or Get
* retType: xml or html
**/
function sendXMLHttpRquest(url, method, retType)
{
var objHTTP = new ActiveXObject("Microsoft.XMLHTTP");
objHTTP.Open(method, url, false);
objHTTP.Send();
var resText = objHTTP.responseText;
objHTTP = null;
if (debug > 0)
{
if (debug > 4)
document.write(resText);
else
alert(resText);
}
if (retType == "html")
return resText;
if(resText.toLowerCase().indexOf("<html>")!=-1)
{
document.write(resText);
document.write("<script>window.reload;</script>");
return null;
}
return resText;
}
/**
* 發(fā)送xml請求
* url: url
* method: Post or Get
* retType: xml or html
**/
function sendXMLHttpRquestNoWait(url, method, retType)
{
var objHTTP = new ActiveXObject("Microsoft.XMLHTTP");
objHTTP.Open(method, url, true);
objHTTP.Send();
var resText = objHTTP.responseText;
objHTTP = null;
if (debug > 0)
{
if (debug > 4)
document.write(resText);
else
alert(resText);
}
if (retType == "html")
return resText;
if(resText.toLowerCase().indexOf("<html>")!=-1)
{
document.write(resText);
document.write("<script>window.reload;</script>");
return null;
}
return resText;
}
/**
* 獲取xml中指定數(shù)據(jù)域的數(shù)據(jù)
* xml:xml
* name:String
*/
function getValueFromXML(xml, name)
{
var value = null;
var tmp_xml = xml;
var tmp_name = name;
var k = null;
try {
while((k = tmp_name.indexOf(".")) != -1)
{
var name_tmp = tmp_name.substring(0,k);
tmp_name = tmp_name.substring(k+1);
var i_tmp = tmp_xml.indexOf("<"+name_tmp+">");
var j_tmp = tmp_xml.indexOf("</"+name_tmp+">");
tmp_xml = tmp_xml.substring(i_tmp+name_tmp.length+2,j_tmp);
}
var i = tmp_xml.indexOf("<"+tmp_name+">");
var j = tmp_xml.indexOf("</"+tmp_name+">");
value = trim(tmp_xml.substring(i+tmp_name.length+2,j));
if(value!=null && value.indexOf("![CDATA") != -1)
{
value = trim(value.substring(value.lastIndexOf("[")+1,value.indexOf("]")));
}
} catch(Exception)
{
value = null;
}
return value;
}
function isExRate(rate)
{
if (rate == "")
return false;
for (var j = 0; j < rate.length; j++) {
if (isNaN(parseInt(rate.charAt(j), 10)) && rate.charAt(j) != ".") {
return false;
}
}
if(rate.indexOf(".")!=rate.lastIndexOf(".") || rate.lastIndexOf(".")==rate.length-1){
return false;
}
if(rate.indexOf(".")!=-1 && rate.substring(rate.indexOf(".")+1).length>4)//小數(shù)點后面只能有四位
{
return false;
}
if((rate * 1 <=0)||(rate * 1 >= 100000)) //匯率必須大于0 匯率必須小于100000.
return false;
if (rate.charAt(0)=="0" )
{
if (!(rate.charAt(1)=="."))
{
return false;
}
}
return true;
}
/**
* 判斷美元-日元掛盤匯率輸入是否合法
**/
function isLegalUSDJPYExRate(rate)
{
if(!isExRate(rate))
return false;
if(rate.indexOf(".")!=-1 && rate.substring(rate.indexOf(".")+1).length>2)//小數(shù)點后面只能有2位
{
return false;
}
return true;
}
//判斷數(shù)值,是否為浮點數(shù)
function MycheckFloat(str) {
var length1 , i , j;
var string1="";
str = javaTrim(str);
string1=str;
length1 = string1.length;
if (length1 == 0)
{
alert( "錯誤!空串!");
return(false);
}
if (str.charAt(0)=="0" )
{
if (length1 == 1)
{
alert("金額不能為0,請重新填寫!");
return(false);
}
else
{
if (!(str.charAt(1)=="."))
{
alert("金額首位不能為0,請重新填寫!");
return(false);
}
}
}
if(str.charAt(0)==".")
return false;
j=0;
for (i = 0 ; i < length1 ; i++) { //判斷每位數(shù)字
if(isNaN(parseInt(str.charAt(i),10))) {
if(str.charAt(i) != ".") {
//alert( "錯誤!請輸入數(shù)值型數(shù)據(jù)!");
return(false);
} else {j++;
if(length1 - i > 3 ){
//alert("小數(shù)點后只能有兩位!");
return(false);}
}
}
}
if(j > 1) {
//alert( "錯誤!小數(shù)點只能有一個!");
return(false);
}
return (true);
}
//判斷數(shù)值,是否為浮點數(shù)
function checkFloat(string) {
var length1 , i , j;
var string1="";
string1 = javaTrim(string)
length1 = string1.length;
if (length1 == 0)
{
alert( "錯誤!空串!");
return(false);
}
if (string.charAt(0)=="0" )
{if (length1 == 1){
alert("金額不能為0,請重新填寫!");
return(false);
}
else{
if (!(string.charAt(1)==".")){
alert("金額首位不能為0,請重新填寫!");
return(false);}
}
}
j=0;
for (i = 0 ; i < length1 ; i++) { //判斷每位數(shù)字
if(isNaN(parseInt(string.charAt(i),10))) {
if(string.charAt(i) != ".") {
alert( "錯誤!請輸入數(shù)值型數(shù)據(jù)!");
return(false);
} else {j++;
if(length1 - i > 3 ){
alert("小數(shù)點后只能有兩位!");
return(false);}
}
}
}
if(j > 1) {
alert( "錯誤!小數(shù)點只能有一個!");
return(false);
}
return (true);
}
//**************去掉字符串前后的空格************
function javaTrim(string){
var length1, i, j;
var string1 = "";
length1 = string.length;
for (i = 0 ; i < length1 ; i++) {
if(string.charAt(i) != " ") {
for (j = i ; j < length1 ; j++)
string1 = string1 + string.charAt(j);
break;
}
}
length1 = string1.length;
string = string1;
string1 = "";
for (i = length1 - 1 ; i >= 0 ; i--) {
if(string.charAt(i) != " ") {
for (j = 0 ; j <= i ; j++)
string1 = string1 + string.charAt(j);
break;
}
}
string = string1;
return(string)
}
//**************轉(zhuǎn)換大寫金額************
var aNum = new Array(10);
aNum[0] = "%u96F6"; //零
aNum[1] = "%u58F9"; //壹
aNum[2] = "%u8d30"; //貳
aNum[3] = "%u53c1"; //叁
aNum[4] = "%u8086"; //肆
aNum[5] = "%u4F0D"; //伍
aNum[6] = "%u9646"; //陸
aNum[7] = "%u67D2"; //柒
aNum[8] = "%u634C"; //捌
aNum[9] = "%u7396"; //玖
var HUNDREDMILLION = 0
var TENTHOUSAND = 1;
var THOUSAND = 2;
var HUNDRED = 3;
var TEN = 4;
var YUAN = 5;
var JIAO = 6;
var CENT = 7;
var ZHENG = 8;
var aUnit = new Array(9);
aUnit[HUNDREDMILLION] = "%u4EBF"; //億
aUnit[TENTHOUSAND] = "%u4E07"; //萬
aUnit[THOUSAND] = "%u4EDF"; //仟
aUnit[HUNDRED] = "%u4F70"; //佰
aUnit[TEN] = "%u62FE"; //拾
aUnit[YUAN] = "%u5143"; //元
aUnit[JIAO] = "%u89D2"; //角
aUnit[CENT] = "%u5206"; //分
aUnit[ZHENG] = "%u6574"; //整
function toChineseCash( cash )
{
var integerCash="";
var decimalCash="";
var integerCNCash = "";
var decimalCNCash = ""
var dotIndex = 0;
var cnCash = "";
var Cash = "";
Cash = javaTrim( cash );
if( Cash == null || Cash.length == 0 )
return cnCash;
if( !checkFloat( Cash ) )
return cnCash;
dotIndex = Cash.indexOf('.');
if( dotIndex != -1 ) {
integerCash = Cash.substring( 0, dotIndex );
decimalCash = Cash.substring( dotIndex + 1 );
}else {
integerCash = Cash;
decimalCash = null;
}
integerCNCash = filterCharacter( integerCash, '0' );
if( integerCNCash == null )
integerCNCash = "";
else
integerCNCash = convertIntegerToChineseCash( integerCNCash );
decimalCNCash = convertDecimalToChineseCash( decimalCash, false );
if( decimalCNCash == null || decimalCNCash.length == 0 ){
if( integerCNCash == null || integerCNCash.length == 0 )
cnCash = aNum[0] + aUnit[YUAN] + aUnit[ZHENG]; //"零元整"
else
cnCash = integerCNCash + aUnit[YUAN] + aUnit[ZHENG]; //"元整"
}else {
if( integerCNCash == null || integerCNCash.length == 0 )
cnCash = decimalCNCash;
else
cnCash = integerCNCash + aUnit[YUAN] + decimalCNCash; //"元"
}
return unescape(cnCash);
}
function filterCharacter( filterString, filterChar )
{
if( filterString == null || filterString.length == 0 )
{
return null;
}
var i = 0;
for( ; i < filterString.length; i++ )
{
if( filterString.charAt( i ) != filterChar )
break;
}
var ret = filterString.substring( i, filterString.length );
ret = (ret.length > 0) ? ret : null;
return ret;
}
function convertIntegerToChineseCash( cash )
{
var tempCash = "";
var returnCash = "";
if( cash == null || cash.length == 0 )
return null;
var totalLen = cash.length;
var times = ((cash.length % 4) > 0) ? ( Math.floor(cash.length/4) + 1 ) : Math.floor(cash.length/4);
var remainder = cash.length % 4;
var i = 0;
for( ; i < times; i++ )
{
if( i == 0 && (remainder > 0) ) {
tempCash = cash.substring( 0, remainder );
}else {
if( remainder > 0 )
tempCash = cash.substring( remainder+(i-1)*4, remainder+i*4 );
else
tempCash = cash.substring( i*4, i*4+4 );
}
tempCash = convert4ToChinese( tempCash, false );
returnCash += tempCash;
if( tempCash != null && tempCash.length != 0 )
returnCash += getUnit( times - i );
}
return returnCash;
}
function convert4ToChinese( cash, bOmitBeginZero )
{
var i = 0;
var length = cash.length;
var bBeginZero = false;
var bMetZero = false;
var returnCash = "";
for( ; i < length; i++ )
{
if( i == 0 && bOmitBeginZero && cash.charAt(i) == '0' )
{
bBeginZero = true;
continue;
}
if( bBeginZero && cash.charAt(i) == '0' )
continue;
if( cash.charAt(i) != '0' ) {
if( bMetZero )
returnCash += aNum[0]; //"零"
bMetZero = false;
returnCash += convert( cash.charAt(i) );
switch( i + (4-length) )
{
case 0:
returnCash += aUnit[THOUSAND]; //"千"
break;
case 1:
returnCash += aUnit[HUNDRED]; //"佰"
break;
case 2:
returnCash += aUnit[TEN]; //"拾"
break;
case 3:
returnCash += "";
break;
default:
break;
}
}else {
bMetZero = true;
}
}
return returnCash;
}
function getUnit( part )
{
var returnUnit = "";
var i = 0;
switch( part )
{
case 1:
returnUnit = "";
break;
case 2:
returnUnit = aUnit[TENTHOUSAND]; // "萬"
break;
case 3:
returnUnit = aUnit[HUNDREDMILLION]; //"億"
break;
default:
if( part > 3 )
{
for( ; i < part - 3; i++ )
{
returnUnit += aUnit[TENTHOUSAND]; // "萬"
}
returnUnit += aUnit[HUNDREDMILLION]; //"億"
}
break;
}
return returnUnit;
}
function convert( num )
{
return aNum[parseInt(num)];
}
function convertDecimalToChineseCash( cash, bOmitBeginZero )
{
var i = 0;
var bBeginZero = false;
var bMetZero = false;
var returnCash = "";
if( cash == null || cash.length == 0 )
return returnCash;
for( ; i < cash.length; i++ )
{
if( i >= 2 )
break;
if( i == 0 && bOmitBeginZero && cash.charAt(i) == '0' )
{
bBeginZero = true;
continue;
}
if( bBeginZero && cash.charAt(i) == '0' )
continue;
if( cash.charAt(i) != '0' ) {
if( bMetZero )
returnCash += aNum[0]; //"零"
bMetZero = false;
returnCash += convert( cash.charAt(i) );
switch( i )
{
case 0:
returnCash += aUnit[JIAO]; //"角"
break;
case 1:
returnCash += aUnit[CENT]; //"分"
break;
default:
break;
}
}else {
bMetZero = true;
}
}
return returnCash;
}
//////////add by xushengang //////////
//去掉 ","
function getoff_Qfw(cash){
var len=cash.length;
var ch="";
var newCash="";
for (var ii=0;ii<len;ii++){
ch=cash.charAt(ii);
if (ch!=","){newCash=newCash+ch;}
}
return newCash;
}
//加上","
function add_Qfw(cash)
{
var len=cash.length;
var cashNew="";//加上","的字符串
var tt=0;//計數(shù)器,每加一個"," tt 加 1
var t=0;//添加","的個數(shù)
if(intLen>3)
{
t=(intLen-intLen%3)/3;
}
else
return cash;
//個數(shù)部分長度不是3的倍數(shù)
if(intLen%3 !=0)
{
for (var ii=0;ii<len;ii++)
{
cashNew=cashNew+cash.charAt(ii);
if (ii== (intLen%3+3*tt-1) && tt<t)
{
tt=tt+1;
cashNew=cashNew+",";
}
}
}
//個數(shù)部分長度是3的倍數(shù)
else
{
tt=tt+1;
for (var ii=0;ii<len;ii++)
{
cashNew=cashNew+cash.charAt(ii);
if (ii== (3*tt-1) && tt<t)
{
tt=tt+1;
cashNew=cashNew+",";
}
}
}
return cashNew;
}
/******************************************************
// *功能描述:把簽名控件寫入頁面中
// *參數(shù)說明:
// *作者:wangtq
// *創(chuàng)建日期:2004-11-13
***************************************************** */
function writeSignActivxObject(basepath)
{ document.write('<div id="infosign" style="display:none">');
document.write('<OBJECT id=InfoSecNetSign1 style="WIDTH: 0px; HEIGHT: 0px" codeBase='+basepath+'cab/NetSign.cab#version=1,8,23,5 data=DATA:application/x-oleobject;BASE64,xDi5YpBBN0+M8KkrCpHMdwADAABMWQAA/wIAAA== classid=clsid:62B938C4-4190-4F37-8CF0-A92B0A91CC77 VIEWASTEXT width="864" height="29">');
document.write('</OBJECT>');
document.write('</div>');
}
//根據(jù)前端輸入日期和間隔天數(shù),得到另一個日期
//輸入?yún)?shù): intervalday(間隔天數(shù)) formname(網(wǎng)頁表單名) inputname(表單中的輸入對象名)
//輸出參數(shù): 新的8位日期
function dateOther(intervalday, formname, inputname,otherDate)
{
var strdate = 20040101;
if(otherDate==0){
var Input = eval("document." + formname + "." + inputname);
strdate = Input.value;
}else{
strdate = otherDate;
}
var year = parseInt(strdate.substr(0, 4),10);
var month = parseInt(strdate.substr(4, 2),10)-1;
var date = parseInt(strdate.substr(6, 2),10);
dateDate = new Date(year,month,date);
for (var i = 0; i < Math.abs(intervalday); i++)
{
if (parseInt(intervalday)>=0)
dateDate.setTime(dateDate.getTime()+1000*60*60*24);
else
dateDate.setTime(dateDate.getTime()-1000*60*60*24);
}
var strYear = dateDate.getFullYear();
var strMonth = dateDate.getMonth()+1;
var strDate = dateDate.getDate();
if (strMonth<10)
strMonth="0"+strMonth;
if (strDate<10)
strDate="0"+strDate;
strdate = strYear+""+strMonth+""+strDate;
//alert(strdate);
return strdate;
}