//共通変数および共通処理 var gBR = ""; var gBRname = ""; var gScriptType = 0; gScriptType = getBrowserType(); function strFillZero(intNum, intKeta){ /* 数値の前桁を0埋めする */ var strData, intZero, intCntr strData = intNum.toString() intZero = intKeta - strData.length for(intCntr=0; intCntr strData = "0" + strData } return (strData); } function boolcheckCellData(aObjINP, aIntChkLen, aIntChkType, aStrLbl, aBoolNull, aBoolMatch, aBoolUcase, aBoolHan, aBoolZen) { //aObjINP: チェック対象のINPUT項目オブジェクト //aIntChkLen: チェックバイト数 //aIntChkType: チェック種類/* 0:英数字, 1:数字のみ, 2:英字のみ, 3:メール形式 4:URL 6:日付 7:テキストエリア -1:チェックなし*/ //aStrLbl: チェック対象の項目名(日本語表示名) //aBoolNull: NULLチェック(必須入力チェックをするかどうか)true or false //aBoolMatch: 入力文字数一致チェックをするかどうか true or false //aBoolUcase: 大文字変換をするかどうか true or false //aBoolHan: 英数字のみ全角→半角変換をするかどうか true or false //aBoolZen: ALL半角→全角変換をするかどうか true or false var strData; var strMsg; var intLen; strData = aObjINP.value; if(aBoolUcase){strData = strData.toUpperCase();} if(aBoolZen){strData = strConvEisu( strData , false);} if(aBoolZen){strData = strConvKanaHtoZ( strData );} if(aBoolHan){strData = strConvEisu( strData , true);} aObjINP.value = strData; intLen = intGetStrbyteJS(strData); if(aBoolNull){ if(0 == intLen){ aObjINP.focus(); window.alert(aStrLbl + "を入力してください。"); return false ; } } //テキストエリアチェック if (aIntChkType == 7){ strMsg = chkTextArea(aObjINP, aIntChkLen) if (strMsg != ""){ aObjINP.focus(); window.alert(aStrLbl + strMsg); return false; }else{ return true; } } if(intLen > 0){ if(aBoolMatch){ if(intLen != aIntChkLen){ aObjINP.focus(); window.alert(aStrLbl + "は半角" + aIntChkLen.toString() + "文字で入力してください。"); return false ; } } else{ if(intLen > aIntChkLen){ aObjINP.focus(); window.alert(aStrLbl + "は半角" + aIntChkLen.toString() + "文字以内で入力してください。"); return false ; } } strMsg = strCheckType(aObjINP, aIntChkType) if(strMsg != ""){ aObjINP.focus(); if(aIntChkType == 6){ window.alert(aStrLbl + "の" + strMsg); }else{ window.alert(aStrLbl + "に" + strMsg); } return false ; } } return true; } function strCheckType(aStrObj, aIntType) { /* aIntType:0 英数字, 1:数字のみ, 2:英字のみ, 3:メール形式 6:日付 7:テキストエリア -1:チェックなし*/ var intAsc; var intLen; var intCntr; var strData; var boolflg = new Array(4); strData = aStrObj.value; if(0 > aIntType) { return ""; } intLen = strData.length; for( intCntr = 0; intCntr < intLen; intCntr++ ){ //> boolflg[0] = true; boolflg[1] = true; boolflg[2] = true; boolflg[3] = true; //intAsc = escape(strData.substring(intCntr, intCntr+1)); intAsc = strData.substring(intCntr, intCntr+1); if (intAsc < "0" || intAsc > "9") { /* 数字以外 */ boolflg[0] = false; } if (intAsc < "A" || intAsc > "Z") { /* 大文字以外 */ boolflg[1] = false; } if (intAsc < "a" || intAsc > "z") { /* 小文字以外 */ boolflg[2] = false; } if(!("@" == intAsc || "." == intAsc || "_" == intAsc)){ boolflg[3] = false; } if("-" == intAsc){ boolflg[0] = true; boolflg[1] = true; boolflg[2] = true; boolflg[3] = true; } switch (aIntType) { case 0: if (!(boolflg[0] || boolflg[1] || boolflg[2])) { return "半角英数字以外の文字が使用されています。"; } break; case 1: if (!boolflg[0]) { return "半角数字以外の文字が使用されています。"; } break; case 2: if (!(boolflg[1] || boolflg[2])) { return "半角英字以外の文字が使用されています。"; } break; case 3: //window.alert(intAsc) //window.alert(boolflg[0]) //window.alert(boolflg[1]) //window.alert(boolflg[2]) //window.alert(boolflg[3]) if (!(boolflg[0] || boolflg[1] || boolflg[2] || boolflg[3])) { return "不適切なメール形式が指定されています。"; } break; } } if (3 == aIntType){ return strCheckEMail(strData) } if (6 == aIntType){ return isDate(aStrObj) } return ""; } function intGetStrbyteJS(aStrData){ /* バイト数を返す */ /* 使用方法 */ /* intlen = intGetStrbyteJS(strInptData) */ var intCntr; var strWork; var intLen; var boolRet intLen = 0; for( intCntr = 0; intCntr < aStrData.length; intCntr++ ){ //> strWork = aStrData.substring(intCntr, intCntr+1); boolRet = boolISzen(strWork); if (boolRet) { intLen = intLen + 2; /*全角*/ } else{ intLen = intLen + 1; /*半角*/ } } return intLen; } function boolISzen(aStrData){ /* 全角か半角を判断 */ /* true:全角 false:半角*/ /* 使用方法 */ /* boolRet = boolISzen(strWork);*/ var sChr; var sCode; var intCntr; var boolRet; boolRet = true; for( intCntr = 0; intCntr < aStrData.length; intCntr++ ){ //> sChr = escape(aStrData.substring(intCntr, intCntr+1)); if (sChr.substring(0,2) == "%u") { sCode = sChr.substring(2,6); // 下4桁 if (sCode >= "FF61"){ if(sCode <= "FF9F") { //> // '%uFF61'から'%uFF9F'は半角カナ、記号とみなす boolRet = false; return (boolRet); } } } else { // 先頭が'%u'でないとき半角とみなす boolRet = false; return (boolRet); } } return (boolRet); } function strConvKanaHtoZ(aStrData){ //半角カタカナを全角に変換 var strZEN1, strZEN2, strHAN1, strHAN2 var strData1, strData2, strConved var strRet var i, j strZEN1 = "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテト" strZEN1 = strZEN1 + "ナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン" strZEN2 = "ガギグゲゴザジズゼゾダヂヅデドバパビピブプベペボポヴ" strHAN1 = "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン" strHAN2 = "カキクケコサシスセソタチツテトハハヒヒフフヘヘホホウ" strRet = "" for(i=0;i strConved = "" strData1 = aStrData.substr(i, 1) strData2 = aStrData.substr(i+1, 1) if( escape(strData1) >= escape("。") && escape(strData1) <= escape("ン") ){ //> if(strData2 == "゚" || strData2 == "゙"){ for(j=0;j if(strData1 == strHAN2.substr(j, 1) ) { if (strData2 == "゚"){j++;} strConved = strZEN2.substr(j, 1) break; } } i++ } else{ for(j=0;j if(strData1 == strHAN1.substr(j, 1)){ strConved = strZEN1.substr(j, 1) break; } } } } else{ if(strData1 == "゚" || strData1 == "゙") {continue;} strConved = strData1; } strRet = strRet + strConved } return strRet; } function strConvEisu(aStrData, aBoolHan){ /* 英数字を半角←→全角に変換 */ var strHan, strZen var strChar, strConv, strOrigin, strConved var strRet var i, j strHan = " !\"#$%&'()*+,-./・" strHan = strHan + "0123456789:;<=>?@" strHan = strHan + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" strHan = strHan + "[\\]^_`" strHan = strHan + "abcdefghijklmnopqrstuvwxyz" strHan = strHan + "{|}~" strZen = " !”#$%&’()*+,−./・" strZen = strZen + "0123456789:;<=>?@" strZen = strZen + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" strZen = strZen + "[¥]^_‘" strZen = strZen + "abcdefghijklmnopqrstuvwxyz" strZen = strZen + "{|}〜" if(aBoolHan){ //全角から半角へ strChar = strZen; strConv = strHan; } else{ //半角から全角へ strChar = strHan; strConv = strZen; } strRet = "" for(i=0;i strOrigin = aStrData.substr(i, 1) strConved = strOrigin for(j=0; j if(strOrigin == strChar.substr(j, 1) ){ strConved = strConv.substr(j, 1) break; } } strRet = strRet + strConved; } //alert(strRet) return strRet } function strCheckEMail(aStrData) { var intCntr; var strMsg = "不適切なメール形式が指定されています。"; if(0==aStrData.length){return true} intCntr = 0; for( var i; i < aStrData.length; i++ ){ //> if( "@" == aStrData.substr(i, 1)){ intCntr++; } } if(intCntr>1){ return(strMsg); } intCntr = aStrData.indexOf("@."); if(intCntr>1){ return(strMsg); } intCntr = aStrData.indexOf(".@"); if(intCntr>1){ return(strMsg); } intCntr = aStrData.indexOf(".."); if(intCntr>1){ return(strMsg); } if("@" == aStrData.substr(0, 1) || "." == aStrData.substr(0, 1)){ return(strMsg); } if("@" == aStrData.substr(aStrData.length-1, 1) || "." == aStrData.substr(0, 1)){ return(strMsg); } intCntr = aStrData.indexOf("@"); if(1>intCntr){ return(strMsg); } //window.alert("OK!") return ""; } function checkW3Cxx() { var BRSname = ""; var BRSv_no = -1; var buff, intPos; var boolIsW3C = true; buff = navigator.userAgent; intPos = buff.lastIndexOf("Netscape"); //alert(intPos); if(intPos>0){ buff = buff.substr(intPos+8, 1); //alert(buff); if(!isNaN(buff)){ BRSv_no = eval(buff); } } //alert(BRSv_no); BRSname = navigator.appName.substr(0,8); if("Netscape" == BRSname){ if(intPos < 6){ //> boolIsW3C = false; } else{ boolIsW3C = true; } } else{ boolIsW3C = true; } return boolIsW3C; } function getBrowserType() { /****************************************************/ /*** 戻り値 ***/ /****************************************************/ /*** 1: IE 4.x 以上の時 、 ***/ /*** 2: Netscape 4.x の時 ***/ /*** 3: Netscape 5.x 以上の時 ***/ /*** 4: その他の IE や Netscape のバージョンの時 ***/ /****************************************************/ var ret; var strVer; gBRname = navigator.appName; strVer = navigator.appVersion; if(document.all) { ret = 1; } else if(document.layers) { ret = 2; } else if( (document.getElementById) && navigator.appName.indexOf("Netscape")>-1 ) { ret = 3; } else if((gBRname.indexOf("Netscape")>-1) || (gBRname.indexOf("Internet Explorer")>-1)) { ret = 4; } if(gBRname.indexOf("Netscape")>-1){ gBR = "NN"; } else if(gBRname.indexOf("Internet Explorer")>-1){ gBR = "IE"; } else{ gBR = "EL"; } gBRname = gBRname + "; " + strVer; return ret; } // *************************************************************** // * Function : isDate // * : 日付チェック // * Argument : strDate "yyyy?mm?dd"(?は任意の区切り文字)もしくは、"yyyymmdd" // * Return : true:OK, false:err // * Note : // * Create : 2003.11.10 Y.Hiramatsu // * Update : 2003.11.20 anyone // *************************************************************** function isDate(obj) { var strMsg = "日付が不適切です。"; var strDate; strDate = obj.value; // 小数点対応? if(strDate.indexOf(".") > -1) return(strMsg); // 8byte未満はダメ!! if(strDate.length < 8) return(strMsg); // > var dateAry; var sep = strDate.substr(4, 1); var y = ""; var m = ""; var d = ""; // データレングス毎にチェック&スプリット if(strDate.length == 10 || strDate.length == 9){ // yyyyとmmの間の文字が数値だとNG if (!isNaN(sep)){ //return false; return(strMsg); } // splitの結果が3以外の場合はNG dateAry = strDate.split(sep); if(dateAry.length != 3){ //return false; return(strMsg); } y = dateAry[0]; m = dateAry[1]; d = dateAry[2]; if(strDate.length == 9){ // 月と日のLENGTHを強制フォーマット if(m.length == 1){ m = "0" + m; } if(d.length == 1){ d = "0" + d; } } }else if(strDate.length == 8){ if (!isNaN(sep)){ // yyyyとmmの間の文字が数値の場合はOK。ベタに分割 // (【yyyymm/d】などでもOKになってしまうが下の数値判断できちんとはじかれる) y = strDate.substr(0, 4); m = strDate.substr(4, 2); d = strDate.substr(6, 2); }else{ // yyyyとmmの間の文字が数値以外の場合はsplitして結果が3以外の場合はNG dateAry = strDate.split(sep); if(dateAry.length != 3){ //return false; return(strMsg); }else{ // 月と日のLENGTHを強制フォーマット y = dateAry[0]; m = "0" + dateAry[1]; d = "0" + dateAry[2]; } } }else{ //return false; return(strMsg); } if(y.length != 4) return(strMsg); if(m.length != 2) return(strMsg); if(d.length != 2) return(strMsg); //数値判断 if(isNaN(y) || isNaN(m) || isNaN(d)) { //return false; return(strMsg); } //整数判断 if((y - Math.floor(y) != 0)||(m - Math.floor(m) != 0)||(d - Math.floor(d) != 0)){ //return false; return(strMsg); } //負の整数判断 if(y < 0 || m < 0 || d < 0) { // > //return false; return(strMsg); } switch(eval(m)) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(d < 1 || d > 31) return(strMsg); break; case 4: case 6: case 9: case 11: if(d < 1 || d > 30) return(strMsg); break; case 2: //4で割り切れるか? if(y % 4 == 0){ //閏年ではない if((y % 100) == 0 && (y % 400 != 0)){ if(d > 28){ //return false; return(strMsg); } } //閏年 else{ if(d > 29){ } } } else if(d > 28){ //return false; return(strMsg); } break; default: // alert("その他エラー"); //return false; return(strMsg); break; } //return true; obj.value = y + "/" + m + "/" + d; return ""; } //テキストエリアバイト数チェック //return strErrMsg function chkTextArea(objINP, maxMsg){ var intJavaKaigyou; intJavaKaigyou = 0; var strErrMsg = ""; //テキストエリアの改行 strMsg = objINP.value; intLen = objINP.value.length; //textareaの端で改行入れる var S; var intKaigyo; var str; intKaigyo = 0; str = ""; for(intIndex = 0; intIndex < intLen; intIndex++){ S = objINP.value.charAt(intIndex); if (getByte(S) == 1) { intKaigyo++; }else{ intKaigyo = intKaigyo + 2; } if (S.indexOf("\n") != -1){ intKaigyo = 0; } if (escape(S) == "%0D") { intKaigyo = 0; } if ((intKaigyo/58) >= 1) { str += S + unescape("%0D%0A"); //str += S + "\n"; intKaigyo = 0; }else{ str += S; } } objINP.value = str; strMsg = objINP.value; intLen = objINP.value.length; for (intIndex=0; intIndex <= intLen; intIndex++) { //javaでさらに改行で1バイト加算される為 if (strMsg.indexOf("\n") != -1){ intJavaKaigyou++; } strMsg = strMsg.replace("\n", "
"); } intVal = intGetStrbyteJS(strMsg); //window.alert("改行挿入前>>" + intGetStrbyteJS(document.frmMain.txtAreaMessage.value)); //window.alert("改行挿入後>>" + intGetStrbyteJS(strMsg)); //window.alert("intJavaKaigyou = " + intJavaKaigyou); //javaでさらに改行で1バイト加算される為 intVal = intVal + intJavaKaigyou; //window.alert("intVal = " + intVal); if (intVal > maxMsg) { strErrMsg = "は全角" + (maxMsg/2) + "以内で入力してください。"; return(strErrMsg); } //objINP.value = strMsg; return(strErrMsg); } function getByte(text) { count = 0; for (i=0; i