///////////////////////////////////////////////////////////////////////////// // // AppSite // // 開発・著作 株式会社 サンセイコンピュータシステム // // (C) Copyright SACS 2001 All Rights Reserved. // // JavaScript共通関数 // // Date : 2001.11.01 // ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // 定義 ///////////////////////////////////////////////////////////////////////////// // 日付整形の編集フラグ var JPCOM_DATETYPE_YMD = 1; // YYYY/MM/DD var JPCOM_DATETYPE_YM = 2; // YYYY/MM var JPCOM_DATETYPE_MD = 3; // MM/DD var JPCOM_DATETYPE_Y = 4; // YYYY var JPCOM_DATETYPE_M = 5; // MM var JPCOM_DATETYPE_D = 6; // DD // 時刻整形の編集フラグ var JPCOM_TIMETYPE_HMS = 1; // HH:MM:SS var JPCOM_TIMETYPE_HM = 2; // HH:MM // 時刻の計算フラグ var JPCOM_KEITYPE_HOUR = 1; // 時 var JPCOM_KEITYPE_MIN = 2; // 分 var JPCOM_KEITYPE_SEC = 3; // 秒 // システム日付・時刻取得の編集フラグ var JPCOM_NOWTYPE_YMD = 1; // YYYY/MM/DD var JPCOM_NOWTYPE_HMS = 2; // HH:MM:SS var JPCOM_NOWTYPE_YMDHMS = 3; // YYYY/MM/DD HH:MM:SS var JPCOM_NOWTYPE_YEAR = 4; // YYYY var JPCOM_NOWTYPE_MONTH = 5; // MM var JPCOM_NOWTYPE_DAY = 6; // DD var JPCOM_NOWTYPE_HOUR = 7; // HH var JPCOM_NOWTYPE_MIN = 8; // MM var JPCOM_NOWTYPE_SEC = 9; // SS // 数値の端数処理の編集フラグ var JPCOM_HASUUTYPE_ROUND = 1; // 四捨五入 var JPCOM_HASUUTYPE_FLOOR = 2; // 切り捨て var JPCOM_HASUUTYPE_CEIL = 3; // 切り上げ ///////////////////////////////////////////////////////////////////////////// // // カーソルの初期位置を自動設定する // // パラメータ // win windowオブジェクト // 戻り値 // boolean :true :正常終了 // :false:フォーカスを設定するための入力領域が存在しない ///////////////////////////////////////////////////////////////////////////// function JsCom_InitFocus( win ) { var i; var j; var doc = win.document; // すべてのフォームのすべてのエレメントを検索 for( i = 0; i < doc.forms.length; i++ ){ for( j = 0; j < document.forms[i].elements.length; j++ ){ // 最初に見つけた入力可能なエレメントへフォーカスを移す if( doc.forms[i].elements[j].type != "hidden" && doc.forms[i].elements[j].type != "submit" && doc.forms[i].elements[j].type != "button" && doc.forms[i].elements[j].type != "reset" ){ doc.forms[i].elements[j].focus(); return true; } } } return false; } ///////////////////////////////////////////////////////////////////////////// // 空白チェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて空白文字列 // :false:空白文字列以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsSpace( sValue ) { var i; var sWork = ""; for( i = 0; i < sValue.length; i++ ){ // 1文字取り出す sWork = sValue.charAt( i ); // 半角スペース又は全角スペースが含まれている場合、falseを返す if( sWork != ' ' && sWork != '' && sWork != ' '){ return false; } } return true; } ///////////////////////////////////////////////////////////////////////////// // 必須入力チェック // パラメータ // objText TEXTオブジェクト // sName 項目名 // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_TextCheckNull( objText, sName ) { // 空白又は未入力だったらエラー if( JsCom_IsSpace( objText.value ) == true ){ alert( sName + "を入力してください。" ); objText.focus(); return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 必須選択チェック // パラメータ // objText SELECTオブジェクト // sName 項目名 // 戻り値 // boolean :true :正しく選択されている // :false:正しく選択されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_SelectCheckNull( objText, sName ) { if( objText.selectedIndex < 0 ){ alert( sName + "を選択してください。" ); objText.focus(); return false; } // 空白又は未入力だったらエラー if( JsCom_IsSpace( objText.options[objText.selectedIndex].value ) == true ){ alert( sName + "を選択してください。" ); objText.focus(); return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 数値チェック(数字・小数点・プラス・マイナス) // パラメータ // sValue 文字列 // 戻り値 // boolean :true :数値変換可能な文字列 // :false:数値変換不可能な文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_IsNumber( sValue ) { // 数値でなければエラー if( isNaN( sValue ) == true ) { return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 数値入力チェック // パラメータ // objText TEXTオブジェクト // sName 項目名 // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_TextCheckNumber( objText, sName ) { // 数値でなければエラー if( JsCom_IsNumber( objText.value ) == false ){ alert( sName + "には数値を入力してください。" ); objText.focus(); objText.select(); return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 整数チェック(数字・プラス・マイナス) // パラメータ // sValue 文字列 // 戻り値 // boolean :true :数値変換可能な文字列 // :false:数値変換不可能な文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_IsInteger( sValue ) { // 文字列が数値でなければエラー if( JsCom_IsNumber( sValue ) == false ) { return false; } // 小数点が存在する場合はエラー if( sValue.indexOf( '.' ) >= 0 ){ return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 整数入力チェック // パラメータ // objText TEXTオブジェクト // sName 項目名 // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_TextCheckInteger( objText, sName ) { // 整数以外だったらエラー if( JsCom_IsInteger( objText.value ) == false ){ alert( sName + "には整数を入力してください。" ); objText.focus(); objText.select(); return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 実数範囲チェック // パラメータ // objText TEXTオブジェクト // dSmall 最小値 // dBig 最大値 // sName 項目名 // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_TextCheckNumRange( objText, dSmall, dBig, sName ) { var dVal; // 数値以外だったらエラー if( JsCom_TextCheckNumber( objText, sName ) == false ){ return false; } dVal = parseFloat( objText.value ); if( dVal < dSmall || dBig < dVal ){ alert( sName + "は " + dSmall.toString() + " 以上 " + dBig.toString() + " 以下を入力してください。" ); objText.focus(); objText.select(); return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 整数範囲チェック // パラメータ // objText TEXTオブジェクト // nSmall 最小値 // nBig 最大値 // sName 項目名 // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_TextCheckIntRange( objText, nSmall, nBig, sName ) { var nVal; // 整数以外だったらエラー if( JsCom_TextCheckInteger( objText, sName ) == false ){ return false; } nVal = parseInt( objText.value ); if( nVal < nSmall || nBig < nVal ){ alert( sName + "は " + nSmall.toString() + " 以上 " + nBig.toString() + " 以下を入力してください。" ); objText.focus(); objText.select(); return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 文字列がすべて半角かチェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて半角文字列 // :false:半角以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsHankaku( sValue ) { var i; var sMoji = ""; for( i = 0; i < sValue.length; i++ ){ sMoji = sValue.substring( i, i + 1 ); // 文字の比較 // 文字が全角スペース、又はそれより大きい場合 if( sMoji >= " " ){ // 文字が半角カナではない場合、エラー if( JsCom_IsHanKataKana( sMoji ) == false ){ return false; } } } return true; } ///////////////////////////////////////////////////////////////////////////// // 文字列がすべて全角かチェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて全角文字列 // :false:全角以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsZenkaku( sValue ) { var i; var sMoji = ""; for( i = 0; i < sValue.length; i++ ){ sMoji = sValue.substring( i, i + 1 ); // 文字の比較 // 全角スペースより小さい場合、エラー if( sMoji < " " ){ return false; } else{ // その文字が半角カナの場合、エラー if( JsCom_IsHanKataKana( sMoji ) == true ){ return false; } } } return true; } ///////////////////////////////////////////////////////////////////////////// // 文字列がすべて半角カナかチェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて半角カナ文字列 // :false:半角カナ以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsHanKataKana( sValue ) { var i; var j; var sConvHanKana = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッー゙゚"; var nLen = sValue.length; var nConvLen = sConvHanKana.length; var nCount = 0; // 半角カナに一致する1文字が文字列の中にあればカウントする for( i = 0; i < nLen; i++ ){ for( j = 0; j < nConvLen; j++ ){ if( sValue.substring( i, i + 1 ) == sConvHanKana.substring( j, j + 1 ) ){ nCount++; } } } // 半角カナに一致した文字数と文字列の長さが異なる場合、エラー if( nCount != nLen ){ return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 文字列がすべて全角かなかチェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて全角かな文字列 // :false:全角かな以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsZenKana( sValue ) { var i; var j; var sConvZenKana = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉっゃゅょゎー"; var nLen = sValue.length; var nConvLen = sConvZenKana.length; var nCount = 0; // 全角かなに一致する1文字が文字列の中にあればカウントする for( i = 0; i < nLen; i++ ){ for( j = 0; j < nConvLen; j++ ){ if( sValue.substring( i, i + 1 ) == sConvZenKana.substring( j, j + 1 ) ){ nCount++; } } } // 全角かなに一致した文字数と文字列の長さが異なる場合、エラー if( nCount != nLen ){ return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 文字列がすべて全角カナかチェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて全角カナ文字列 // :false:全角カナ以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsZenKataKana( sValue ) { var i; var j; var sConvZenKana = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲンヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォヵヶッャュョヮー"; var nLen = sValue.length; var nConvLen = sConvZenKana.length; var nCount = 0; // 全角カナに一致する1文字が文字列の中にあればカウントする for( i = 0; i < nLen; i++ ){ for( j = 0; j < nConvLen; j++ ){ if( sValue.substring( i, i + 1 ) == sConvZenKana.substring( j, j + 1 ) ){ nCount++; } } } // 全角カナに一致した文字数と文字列の長さが異なる場合、エラー if( nCount != nLen ){ return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 文字列がすべて英字かチェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて英字文字列 // :false:英字以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsAlpha( sValue ) { var i; var j; var sConvAlpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var nLen = sValue.length; var nConvLen = sConvAlpha.length; var nCount = 0; // 英字に一致する1文字が文字列の中にあればカウントする for( i = 0; i < nLen; i++ ){ for( j = 0; j < nConvLen; j++ ){ if( sValue.substring( i, i + 1 ) == sConvAlpha.substring( j, j + 1 ) ){ nCount++; } } } // 英字に一致した文字数と文字列の長さが異なる場合、エラー if( nCount != nLen ){ return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 文字列がすべて数字かチェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて数字文字列 // :false:数字以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsDigit( sValue ) { var i; var j; var sConvDigit = "1234567890"; var nLen = sValue.length; var nConvLen = sConvDigit.length; var nCount = 0; // 数字に一致する1文字が文字列の中にあればカウントする for( i = 0; i < nLen; i++ ){ for( j = 0; j < nConvLen; j++ ){ if( sValue.substring( i, i + 1 ) == sConvDigit.substring( j, j + 1 ) ){ nCount++; } } } // 数字に一致した文字数と文字列の長さが異なる場合、エラー if( nCount != nLen ){ return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 文字列がすべて英数字かチェック // パラメータ // sValue 文字列 // 戻り値 // boolean :true :すべて英数字文字列 // :false:英数字以外の文字が含まれている ///////////////////////////////////////////////////////////////////////////// function JsCom_IsAlphaNum( sValue ) { var i; var nLen = sValue.length; var nCount = 0; var sMoji = ""; // 英数字に一致する1文字が文字列の中にあればカウントする for( i = 0; i < nLen; i++ ){ sMoji = sValue.substring( i, i + 1 ); if( JsCom_IsAlpha( sMoji ) == true || JsCom_IsDigit( sMoji ) == true ){ nCount++; } } // 英数字に一致した文字数と文字列の長さが異なる場合、エラー if( nCount != nLen ){ return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 日付チェック // パラメータ // sYear 年 // sMonth 月 // sDay 日 // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_IsDate( sYear, sMonth, sDay ) { var nYear = 0; var nMonth = 0; var nDay = 0; var nMaxDay = 0; // 年・月・日が空白の場合、処理を行なわない if( JsCom_IsSpace( sYear ) == true && JsCom_IsSpace( sMonth ) == true && JsCom_IsSpace( sDay ) == true ) { return true; } // 年・月・日が数値でない場合、エラー if( JsCom_IsNumber( sYear ) == false ) return false; if( JsCom_IsNumber( sMonth ) == false ) return false; if( JsCom_IsNumber( sDay ) == false ) return false; // 年・月・日を数値化する nYear = JsCom_Number( sYear ); nMonth = JsCom_Number( sMonth ); nDay = JsCom_Number( sDay ); // 年が正しく設定されてない場合、エラー if( nYear < 1 || nYear > 9999 ) { return false; } // 月が正しく設定されてない場合、エラー if( nMonth < 1 || nMonth > 12 ) { return false; } // 各月の最大日を取得 nMaxDay = JsCom_GetMaxDay( nYear, nMonth ); // 日が正しく設定されていない場合、エラー if( nDay < 1 || nDay > nMaxDay ) { return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 日付チェック(年月日) // パラメータ // sDate 日付文字列(「YYYYMMDD」or「YYYY/MM/DD」or「YYYY.MM.DD」) // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_IsDate_YMD( sDate ) { var sYear = ""; var sMonth = ""; var sDay = ""; var n; // 日付が空白の場合、処理を行なわない if ( JsCom_IsSpace( sDate ) == true ) return( true ); // "/" & "."が含まれていない文字列の場合 if( sDate.indexOf( '/' ) < 0 && sDate.indexOf( '.' ) < 0 ){ // (YYYYMMDDの場合) // 桁が足りない場合を考慮 sDate = ' ' + sDate; nLen = sDate.length; // 西暦日付を分解 sYear = sDate.substring( nLen - 8, nLen - 4 ); // 年 sMonth = sDate.substring( nLen - 4, nLen - 2 ); // 月 sDay = sDate.substring( nLen - 2, nLen ); // 日 } else{ // (YYYY/MM/DD or YYYY.MM.DDの場合) var arDateCol = sDate.split( "/" ); n = arDateCol.length - 1; if( n <= 0 ){ arDateCol = sDate.split( "." ); n = arDateCol.length - 1; } if( n >= 0 ) sDay = arDateCol[n]; // 日 n--; if( n >= 0 ) sMonth = arDateCol[n]; // 月 n--; if( n >= 0 ) sYear = arDateCol[n]; // 年 n--; } return( JsCom_IsDate( sYear, sMonth, sDay ) ); } ///////////////////////////////////////////////////////////////////////////// // 日付チェック(月日) // パラメータ // sDate 日付文字列(「MMDD」or「MM/DD」or「MM.DD」) // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_IsDate_MD( sDate ) { var sYear = ""; var sMonth = ""; var sDay = ""; var n; // 日付が空白の場合、処理を行なわない if ( JsCom_IsSpace( sDate ) == true ) return( true ); // "/" & "."が含まれていない文字列の場合 if( sDate.indexOf( '/' ) < 0 && sDate.indexOf( '.' ) < 0 ){ // (MMDDの場合) // 桁が足りない場合を考慮 sDate = ' ' + sDate; nLen = sDate.length; // 月日を分解 sMonth = sDate.substring( nLen - 4, nLen - 2 ); // 月 sDay = sDate.substring( nLen - 2, nLen ); // 日 // 年を今年にセットする sYear = JsCom_GetNow_DateTime( JPCOM_NOWTYPE_YEAR ); } else{ // (MM/DD or MM.DDの場合) var arDateCol = sDate.split( "/" ); n = arDateCol.length - 1; if( n <= 0 ){ arDateCol = sDate.split( "." ); n = arDateCol.length - 1; } if( n >= 0 ) sDay = arDateCol[n]; // 日 n--; if( n >= 0 ) sMonth = arDateCol[n]; // 月 n--; // 年を今年にセットする sYear = JsCom_GetNow_DateTime( JPCOM_NOWTYPE_YEAR ); } return( JsCom_IsDate( sYear, sMonth, sDay ) ); } ///////////////////////////////////////////////////////////////////////////// // 日付の大小チェック // パラメータ // sDate1 日付文字列(「YYYY/MM/DD」or「YYYY.MM.DD」or「YYYYMMDD」) // sDate2 日付文字列(「YYYY/MM/DD」or「YYYY.MM.DD」or「YYYYMMDD」) // 戻り値 // -1 sDate1 > sDate2 // 0 sDate1 = sDate2 // 1 sDate1 < sDate2 ///////////////////////////////////////////////////////////////////////////// function JsCom_CmpDate( sDate1, sDate2 ) { var sWorkDate1 = ""; var sWorkDate2 = ""; // 日付整形(YYYY/MM/DD型に) sWorkDate1 = JsCom_FormatDate_YMD( sDate1, JPCOM_DATETYPE_YMD ); sWorkDate2 = JsCom_FormatDate_YMD( sDate2, JPCOM_DATETYPE_YMD ); // 日付の大小チェック if( sWorkDate1 > sWorkDate2 ) { return -1; } if( sWorkDate1 < sWorkDate2 ) { return 1; } return 0; } ///////////////////////////////////////////////////////////////////////////// // 時間チェック // パラメータ // sHour 時間 // sMin 分 // sSec 秒 // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_IsTime( sHour, sMin, sSec ) { // 時間・分・秒を数値化する var nHour = JsCom_Number( sHour ); var nMin = JsCom_Number( sMin ); var nSec = JsCom_Number( sSec ); // 時間が正しく設定されていない場合、エラー if( nHour < 0 || nHour > 24 ) { return false; } // 分が正しく設定されていない場合、エラー if( nMin < 0 || nMin > 59 ) { return false; } // 秒が正しく設定されていない場合、エラー if( nSec < 0 || nSec > 59 ) { return false; } return true; } ///////////////////////////////////////////////////////////////////////////// // 時間チェック // パラメータ // sTime 時刻文字列(「HHMMSS」or「HHMM」or「HH:MM:SS」or「HH:MM」) // 戻り値 // boolean :true :正しく入力されている // :false:正しく入力されていない ///////////////////////////////////////////////////////////////////////////// function JsCom_IsTime2( sTime ) { var nLen = 0; var sHour = ""; var sMin = ""; var sSec = ""; var n; // 時刻が空白の場合、処理を行なわない if ( JsCom_IsSpace( sTime ) == true ) return( true ); // ":"が含まれていない文字列の場合 if( sTime.indexOf( ':' ) < 0 ){ // (HHMMSS or HHMMの場合) // 文字列の長さ nLen = sTime.length; if( nLen > 4 ){ // (HHMMSSの場合) // 桁が足りない場合を考慮 sTime = ' ' + sTime; nLen = sTime.length; // 時刻を分解 sHour = sTime.substring( nLen - 6, nLen - 4 ); // 時間 sMin = sTime.substring( nLen - 4, nLen - 2 ); // 分 sSec = sTime.substring( nLen - 2, nLen ); // 秒 } else{ // (HHMMの場合) // 桁が足りない場合を考慮 sTime = ' ' + sTime; nLen = sTime.length; // 時・分を分解 sHour = sTime.substring( nLen - 4, nLen - 2 ); // 時間 sMin = sTime.substring( nLen - 2, nLen ); // 分 // 秒を0秒にセットする sSec = "0"; } } else{ // (HH:MM:SS or HH:MMの場合) var arTimeCol = sTime.split( ":" ); n = arTimeCol.length - 1; if( sTime.indexOf( ':' ) == sTime.lastIndexOf( ':' ) ){// (HH:MMの場合) if( n >= 0 ) sMin = arTimeCol[n]; // 分 n--; if( n >= 0 ) sHour = arTimeCol[n]; // 時間 n--; // 秒を0秒にセットする sSec = "0"; } else{ // (HH:MM:SSの場合) if( n >= 0 ) sSec = arTimeCol[n]; // 秒 n--; if( n >= 0 ) sMin = arTimeCol[n]; // 分 n--; if( n >= 0 ) sHour = arTimeCol[n]; // 時間 n--; } } return( JsCom_IsTime( sHour, sMin, sSec ) ); } ///////////////////////////////////////////////////////////////////////////// // 値に変更があったか判定する // パラメータ // objTarget オブジェクト ※TEXT, TEXTAREA, COMBOBOX, RADIO, CHECKBOXのみ // 戻り値 // boolean :true :変更あり // :false:変更なし ///////////////////////////////////////////////////////////////////////////// function JsCom_CheckValueChange( objTarget ) { var i; // TEXT,TEXTAREA if( objTarget.type == "text" || objTarget.type == "textarea" ){ if( objTarget.defaultValue != objTarget.value ){ return true; } } // COMBOBOX if( objTarget.type == "select-one" ){ for( i = 0; i < objTarget.options.length; i++ ){ if( objTarget.options[i].defaultSelected != objTarget.options[i].selected ){ return true; break; } } } // RADIO,CHECKBOX if( objTarget.type == "radio" || objTarget.type == "checkbox" ){ if( objTarget.defaultChecked != objTarget.checked ){ return true; } } return false; } ///////////////////////////////////////////////////////////////////////////// // 日付整形(年月日) // パラメータ // sDate 日付文字列(「.」or「/」or「YYYYMMDD」or「YYYY/MM/DD」or「YYYY.MM.DD」) // nEdit 編集フラグ(※ 定義が上記に設定されています。対応する形は下記を参照して下さい。) // 戻り値 // 編集フラグにより返される文字列が定義の通り変化する // 定義以外だった場合、Nullを返す // ・YYYY/MM/DD // ・YYYY/MM // ・MM/DD // ・YYYY // ・MM // ・DD ///////////////////////////////////////////////////////////////////////////// function JsCom_FormatDate_YMD( sDate, nEdit ) { var nYear = 0; var nMonth = 0; var nDay = 0; var n; // 日付が正しく設定されていない場合 if( JsCom_IsSpace( sDate ) == true ) return( "" ); // 編集フラグが正しく設定されていない場合 if( nEdit != JPCOM_DATETYPE_YMD && nEdit != JPCOM_DATETYPE_YM && nEdit != JPCOM_DATETYPE_MD && nEdit != JPCOM_DATETYPE_Y && nEdit != JPCOM_DATETYPE_M && nEdit != JPCOM_DATETYPE_D ){ return( "" ); } // 日付文字列が"." or "/"の場合システムの現在の日付を返す if( sDate == "." || sDate == "/" ){ nYear = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_YEAR ) ); // 年 nMonth = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_MONTH ) ); // 月 nDay = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_DAY ) ); // 日 } else{ // 日付文字列が「YYYYMMDD」の場合 if( sDate.indexOf( '/' ) < 0 && sDate.indexOf( '.' ) < 0 ){ // 桁が足りない場合を考慮 sDate = ' ' + sDate; var nLen = sDate.length; // 西暦日付を分解(文字列の右から取得) nYear = JsCom_Number( sDate.substring( nLen - 8, nLen - 4 ) ); // 年 nMonth = JsCom_Number( sDate.substring( nLen - 4, nLen - 2 ) ); // 月 nDay = JsCom_Number( sDate.substring( nLen - 2, nLen ) ); // 日 } // 日付文字列が「YYYY/MM/DD」or「YYYY.MM.DD」の場合 else{ var arDateCol = sDate.split( "/" ); n = arDateCol.length - 1; if( n <= 0 ){ arDateCol = sDate.split( "." ); n = arDateCol.length - 1; } // 西暦日付を分解 if( n >= 0 ) nDay = JsCom_Number( arDateCol[n] ); // 日 n--; if( n >= 0 ) nMonth = JsCom_Number( arDateCol[n] ); // 月 n--; if( n >= 0 ) nYear = JsCom_Number( arDateCol[n] ); // 年 n--; } } // 編集フラグにより戻り値を分ける if( nEdit == JPCOM_DATETYPE_YMD ){ // YYYY/MM/DD return JsCom_FormatZero( nYear.toString(), 4 ) + "/" + JsCom_FormatZero( nMonth.toString(), 2 ) + "/" + JsCom_FormatZero( nDay.toString(), 2 ); } if( nEdit == JPCOM_DATETYPE_YM ){ // YYYY/MM return JsCom_FormatZero( nYear.toString(), 4 ) + "/" + JsCom_FormatZero( nMonth.toString(), 2 ); } if( nEdit == JPCOM_DATETYPE_MD ){ // MM/DD return JsCom_FormatZero( nMonth.toString(), 2 ) + "/" + JsCom_FormatZero( nDay.toString(), 2 ); } if( nEdit == JPCOM_DATETYPE_Y ){ // YYYY return JsCom_FormatZero( nYear.toString(), 4 ); } if( nEdit == JPCOM_DATETYPE_M ){ // MM return JsCom_FormatZero( nMonth.toString(), 2 ); } if( nEdit == JPCOM_DATETYPE_D ){ // DD return JsCom_FormatZero( nDay.toString(), 2 ); } } ///////////////////////////////////////////////////////////////////////////// // 日付整形(年月日) // パラメータ // objText フォームエレメントオブジェクト(text又はtextarea) // nEdit 編集フラグ // 戻り値 // boolean :true // ※ 詳細はJsCom_FormatDate_YMDを参照して下さい。 ///////////////////////////////////////////////////////////////////////////// function JsCom_TextFormatDate_YMD( objText, nEdit ) { objText.value = JsCom_FormatDate_YMD( objText.value, nEdit ); return true; } ///////////////////////////////////////////////////////////////////////////// // 日付整形(年月) // パラメータ // sDate 日付文字列(「.」or「/」or「YYYYMM」or「YYYY/MM」or「YYYY.MM」) // nEdit 編集フラグ(※ 定義が上記に設定されています。対応する形は下記を参照して下さい。) // 戻り値 // 編集フラグにより返される文字列が定義の通り変化する // 定義以外だった場合、Nullを返す(※ 定義は下記の形のもの) // ・YYYY/MM // ・YYYY // ・MM ///////////////////////////////////////////////////////////////////////////// function JsCom_FormatDate_YM( sDate, nEdit ) { var nYear = 0; var nMonth = 0; var n; // 日付が正しく設定されていない場合 if( JsCom_IsSpace( sDate ) == true ) return( "" ); // 編集フラグが正しく設定されていない場合 if( nEdit != JPCOM_DATETYPE_YM && nEdit != JPCOM_DATETYPE_Y && nEdit != JPCOM_DATETYPE_M ){ return( "" ); } // 日付文字列が"." or "/"の場合システムの現在の日付を返す if( sDate == "." || sDate == "/" ){ nYear = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_YEAR ) ); // 年 nMonth = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_MONTH ) ); // 月 } else{ // 日付文字列が「YYYYMM」の場合 if( sDate.indexOf( '/' ) < 0 && sDate.indexOf( '.' ) < 0 ){ // 桁が足りない場合を考慮 sDate = ' ' + sDate; var nLen = sDate.length; // 西暦日付を分解(文字列の右から取得) nYear = JsCom_Number( sDate.substring( nLen - 6, nLen - 2 ) ); // 年 nMonth = JsCom_Number( sDate.substring( nLen - 2, nLen ) ); // 月 } // 日付文字列が「YYYY/MM」or「YYYY.MM」の場合 else{ var arDateCol = sDate.split( "/" ); n = arDateCol.length - 1; if( n <= 0 ){ arDateCol = sDate.split( "." ); n = arDateCol.length - 1; } // 西暦日付を分解 if( n >= 0 ) nMonth = JsCom_Number( arDateCol[n] ); // 月 n--; if( n >= 0 ) nYear = JsCom_Number( arDateCol[n] ); // 年 n--; } } // 編集フラグにより戻り値を分ける if( nEdit == JPCOM_DATETYPE_YM ){ // YYYY/MM return JsCom_FormatZero( nYear.toString(), 4 ) + "/" + JsCom_FormatZero( nMonth.toString(), 2 ); } if( nEdit == JPCOM_DATETYPE_Y ){ // YYYY return JsCom_FormatZero( nYear.toString(), 4 ); } if( nEdit == JPCOM_DATETYPE_M ){ // MM return JsCom_FormatZero( nMonth.toString(), 2 ); } } ///////////////////////////////////////////////////////////////////////////// // 日付整形(年月) // パラメータ // objText フォームエレメントオブジェクト(text又はtextarea) // nEdit 編集フラグ // 戻り値 // boolean :true // ※ 詳細はJsCom_FormatDate_YMを参照して下さい。 ///////////////////////////////////////////////////////////////////////////// function JsCom_TextFormatDate_YM( objText, nEdit ) { objText.value = JsCom_FormatDate_YM( objText.value, nEdit ); return true; } ///////////////////////////////////////////////////////////////////////////// // 日付整形(月日) // パラメータ // sDate 日付文字列(「.」or「/」or「MMDD」or「MM/DD」or「MM.DD」) // nEdit 編集フラグ(※ 定義が上記に設定されています。対応する形は下記を参照して下さい。) // 戻り値 // 編集フラグにより返される文字列が定義の通り変化する // 定義以外だった場合、Nullを返す(※ 定義は下記の形のもの) // ・MM/DD // ・MM // ・DD ///////////////////////////////////////////////////////////////////////////// function JsCom_FormatDate_MD( sDate, nEdit ) { var nMonth = 0; var nDay = 0; var n; // 日付が正しく設定されていない場合 if( JsCom_IsSpace( sDate ) == true ) return( "" ); // 編集フラグが正しく設定されていない場合 if( nEdit != JPCOM_DATETYPE_MD && nEdit != JPCOM_DATETYPE_M && nEdit != JPCOM_DATETYPE_D ){ return( "" ); } // 日付文字列が"." or "/"の場合システムの現在の日付を返す if( sDate == "." || sDate == "/" ){ nMonth = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_MONTH ) ); // 月 nDay = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_DAY ) ); // 日 } else{ // 日付文字列が「MMDD」の場合 if( sDate.indexOf( '/' ) < 0 && sDate.indexOf( '.' ) < 0 ){ // 桁が足りない場合を考慮 sDate = ' ' + sDate; var nLen = sDate.length; // 西暦日付を分解(文字列の右から取得) nMonth = JsCom_Number( sDate.substring( nLen - 4, nLen - 2 ) ); // 月 nDay = JsCom_Number( sDate.substring( nLen - 2, nLen ) ); // 日 } // 日付文字列が「MM/DD」or「MM.DD」の場合 else{ var arDateCol = sDate.split( "/" ); n = arDateCol.length - 1; if( n <= 0 ){ arDateCol = sDate.split( "." ); n = arDateCol.length - 1; } // 西暦日付を分解 if( n >= 0 ) nDay = JsCom_Number( arDateCol[n] ); // 日 n--; if( n >= 0 ) nMonth = JsCom_Number( arDateCol[n] ); // 月 n--; } } // 編集フラグにより戻り値を分ける if( nEdit == JPCOM_DATETYPE_MD ){ // MM/DD return JsCom_FormatZero( nMonth.toString(), 2 ) + "/" + JsCom_FormatZero( nDay.toString(), 2 ); } if( nEdit == JPCOM_DATETYPE_M ){ // MM return JsCom_FormatZero( nMonth.toString(), 2 ); } if( nEdit == JPCOM_DATETYPE_D ){ // DD return JsCom_FormatZero( nDay.toString(), 2 ); } } ///////////////////////////////////////////////////////////////////////////// // 日付整形(月日) // パラメータ // objText フォームエレメントオブジェクト(text又はtextarea) // nEdit 編集フラグ // 戻り値 // boolean :true // ※ 詳細はJsCom_FormatDate_MDを参照して下さい。 ///////////////////////////////////////////////////////////////////////////// function JsCom_TextFormatDate_MD( objText, nEdit ) { objText.value = JsCom_FormatDate_MD( objText.value, nEdit ); return true; } ///////////////////////////////////////////////////////////////////////////// // 月の最大日を取得 // パラメータ // nYear 年 // nMonth 月 // 戻り値 // 月の最大日 ///////////////////////////////////////////////////////////////////////////// function JsCom_GetMaxDay( nYear, nMonth ) { var sMaxDay = "31,28,31,30,31,30,31,31,30,31,30,31" var nMaxDay = 0; // 月の最終日を取得 var arMaxDayCol = sMaxDay.split( "," ); nMaxDay = arMaxDayCol[nMonth - 1]; // 月が2月の場合、閏年か判断 if( nMonth == 2 ){ if( ( ( nYear % 4 == 0 ) && ( nYear % 100 != 0 ) ) || ( nYear % 400 == 0 ) ) { nMaxDay = 29; } } return( nMaxDay ); } ///////////////////////////////////////////////////////////////////////////// // 日の計算 // パラメータ // sDate 日付文字列(「YYYY/MM/DD」or「YYYY.MM.DD」or「YYYYMMDD」) // nNisuu 求める日数 // 戻り値 // 計算した後の日付文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_AddDec_Day( sDate, nNisuu ) { var nYear = 0; var nMonth = 0; var nDay = 0; // 引数のチェック // 日付が正しく設定されていない場合 if( JsCom_IsSpace ( sDate ) == true ) return( "" ); if( JsCom_IsDate_YMD( sDate ) == false ) return( "" ); // 求める日数が正しく設定されていない場合 if( isNaN( nNisuu ) == true ) return( "" ); // 日付の整形(YYYY/MM/DD型) sDate = JsCom_FormatDate_YMD( sDate, JPCOM_DATETYPE_YMD ); // 日の計算 var dtDate = new Date( sDate ); dtDate.setTime( dtDate.getTime() + ( 1000 * 60 * 60 * 24 ) * nNisuu ); nYear = JsCom_GetYear( dtDate ); nMonth = dtDate.getMonth() + 1; nDay = dtDate.getDate(); return JsCom_FormatZero( nYear.toString(), 4 ) + "/" + JsCom_FormatZero( nMonth.toString(), 2 ) + "/" + JsCom_FormatZero( nDay.toString(), 2 ); } ///////////////////////////////////////////////////////////////////////////// // 月の計算 // パラメータ // sDate 日付文字列(「YYYY/MM/DD」or「YYYY.MM.DD」or「YYYYMMDD」) // nTukisuu 求める月数 // 戻り値 // 計算した後の日付文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_AddDec_Month( sDate, nTukisuu ) { var nYear = 0; var nMonth = 0; var nDay = 0; var nMaxDay = 0; var n; // 引数のチェック // 日付が正しく設定されていない場合 if( JsCom_IsSpace ( sDate ) == true ) return( "" ); if( JsCom_IsDate_YMD( sDate ) == false ) return( "" ); // 求める月数が正しく設定されていない場合 if( isNaN( nTukisuu ) == true ) return( "" ); // 日付の整形(YYYY/MM/DD型) sDate = JsCom_FormatDate_YMD( sDate, JPCOM_DATETYPE_YMD ); // 日付を分解 var arDateCol = sDate.split( "/" ); n = arDateCol.length - 1; if( n >= 0 ) nDay = JsCom_Number( arDateCol[n] ); // 日 n--; if( n >= 0 ) nMonth = JsCom_Number( arDateCol[n] ); // 月 n--; if( n >= 0 ) nYear = JsCom_Number( arDateCol[n] ); // 年 n--; // 月の計算 nMonth += nTukisuu; // 0月以下や13月以上の場合、年月を正規化する while( nMonth < 1 || 12 < nMonth ){ if( nMonth < 1 ){ nYear--; nMonth += 12; } if( nMonth > 12 ){ nYear ++; nMonth -= 12; } if( nYear < 0 ) nYear = 0; if( nYear > 9999 ) nYear = 9999; } // 月の最終日を取得 nMaxDay = JsCom_GetMaxDay( nYear, nMonth ); // 月の最終日より大きい日の場合、月の最終日に修正 if( nDay > nMaxDay ){ nDay = nMaxDay; } return JsCom_FormatZero( nYear.toString(), 4 ) + "/" + JsCom_FormatZero( nMonth.toString(), 2 ) + "/" + JsCom_FormatZero( nDay.toString(), 2 ); } ///////////////////////////////////////////////////////////////////////////// // 年の計算 // パラメータ // sDate 日付文字列(「YYYY/MM/DD」or「YYYY.MM.DD」or「YYYYMMDD」) // nNensuu 求める年数 // 戻り値 // 計算した後の日付文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_AddDec_Year( sDate, nNensuu ) { var nYear = 0; var nMonth = 0; var nDay = 0; var nMaxDay = 0; var n; // 引数のチェック // 日付が正しく設定されていない場合 if( JsCom_IsSpace ( sDate ) == true ) return( "" ); if( JsCom_IsDate_YMD( sDate ) == false ) return( "" ); // 求める年数が設定されていない場合 if( isNaN( nNensuu ) == true ) return( "" ); // 日付の整形(YYYY/MM/DD型) sDate = JsCom_FormatDate_YMD( sDate, JPCOM_DATETYPE_YMD ); // 日付を分解 var arDateCol = sDate.split( "/" ); n = arDateCol.length - 1; if( n >= 0 ) nDay = JsCom_Number( arDateCol[n] ); // 日 n--; if( n >= 0 ) nMonth = JsCom_Number( arDateCol[n] ); // 月 n--; if( n >= 0 ) nYear = JsCom_Number( arDateCol[n] ); // 年 n--; // 年の計算 nYear += nNensuu; if( nYear < 0 ) nYear = 0; if( nYear > 9999 ) nYear = 9999; // 月の最終日を取得 nMaxDay = JsCom_GetMaxDay( nYear, nMonth ); // 月の最終日より大きい日の場合、月の最終日に修正 if( nDay > nMaxDay ){ nDay = nMaxDay; } return JsCom_FormatZero( nYear.toString(), 4 ) + "/" + JsCom_FormatZero( nMonth.toString(), 2 ) + "/" + JsCom_FormatZero( nDay.toString(), 2 ); } ///////////////////////////////////////////////////////////////////////////// // 時刻整形(時分秒) // パラメータ // sTime 時刻文字列(「.」or「:」or「HHMMSS」or「HH:MM:SS」) // nEdit 編集フラグ(※ 定義が上記に設定されています。対応する形は下記を参照して下さい。) // 戻り値 // 編集フラグにより返される文字列が定義の通り変化する // 定義以外だった場合、Nullを返す // ・HH:MM:SS // ・HH:MM ///////////////////////////////////////////////////////////////////////////// function JsCom_FormatTime_HMS( sTime, nEdit ) { var nHour = -1; var nMin = -1; var nSec = -1; var n; // 時刻が正しく設定されていない場合 if( JsCom_IsSpace( sTime ) == true ) return( "" ); // 編集フラグが正しく設定されていない場合 if( nEdit != JPCOM_TIMETYPE_HMS && nEdit != JPCOM_TIMETYPE_HM ) return( "" ); // 時刻文字列が"." or ":"の場合システムの現在の時刻を返す if( sTime == "." || sTime == ":" ){ nHour = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_HOUR ) ); // 時 nMin = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_MIN ) ); // 分 nSec = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_SEC ) ); // 秒 } else{ // 時刻文字列が「HHMMSS」の場合 if( sTime.indexOf( ':' ) < 0 ){ // 桁が足りない場合を考慮 sTime = ' ' + sTime; var nLen = sTime.length; // 時刻を分解(文字列の右から取得) nHour = JsCom_Number( sTime.substring( nLen - 6, nLen - 4 ) ); // 時間 nMin = JsCom_Number( sTime.substring( nLen - 4, nLen - 2 ) ); // 分 nSec = JsCom_Number( sTime.substring( nLen - 2, nLen ) ); // 秒 } // 時刻文字列が「HH:MM:SS」の場合 else{ var arTimeCol = sTime.split( ":" ); n = arTimeCol.length - 1; // 時刻を分解 if( n >= 0 ) nSec = JsCom_Number( arTimeCol[n] ); // 秒 n--; if( n >= 0 ) nMin = JsCom_Number( arTimeCol[n] ); // 分 n--; if( n >= 0 ) nHour = JsCom_Number( arTimeCol[n] ); // 時間 n--; } } // 編集フラグにより戻り値を分ける if( nEdit == JPCOM_TIMETYPE_HMS ){ // HH:MM:SS return JsCom_FormatZero( nHour.toString(), 2 ) + ":" + JsCom_FormatZero( nMin.toString(), 2 ) + ":" + JsCom_FormatZero( nSec.toString(), 2 ); } if( nEdit == JPCOM_TIMETYPE_HM ){ // HH:MM return JsCom_FormatZero( nHour.toString(), 2 ) + ":" + JsCom_FormatZero( nMin.toString(), 2 ); } } ///////////////////////////////////////////////////////////////////////////// // 時刻整形(時分秒) // パラメータ // objText フォームエレメントオブジェクト(text又はtextarea) // nEdit 編集フラグ // 戻り値 // boolean :true // ※ 詳細はJsCom_FormatTime_HMSを参照して下さい。 ///////////////////////////////////////////////////////////////////////////// function JsCom_TextFormatTime_HMS( objText, nEdit ) { objText.value = JsCom_FormatTime_HMS( objText.value, nEdit ); return true; } ///////////////////////////////////////////////////////////////////////////// // 時刻整形(時分) // パラメータ // sTime 時刻文字列(「.」or「:」or「HHMM」or「HH:MM」) // nEdit 編集フラグ(※ 定義が上記に設定されています。対応する形は下記を参照して下さい。) // 戻り値 // 編集フラグにより返される文字列が定義の通り変化する // 定義以外だった場合、Nullを返す(※ 定義は下記の形のもの) // ・HH:MM ///////////////////////////////////////////////////////////////////////////// function JsCom_FormatTime_HM( sTime, nEdit ) { var nHour = -1; var nMin = -1; var n; // 時刻が正しく設定されていない場合 if( JsCom_IsSpace( sTime ) == true ) return( "" ); // 編集フラグが正しく設定されていない場合 if( nEdit != JPCOM_TIMETYPE_HM ) return( "" ); // 時刻文字列が"." or ":"の場合システムの現在の時刻を返す if( sTime == "." || sTime == ":" ){ nHour = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_HOUR ) ); // 時 nMin = JsCom_Number( JsCom_GetNow_DateTime( JPCOM_NOWTYPE_MIN ) ); // 分 } else{ // 時刻文字列が「HHMM」の場合 if( sTime.indexOf( ':' ) < 0 ){ // 桁が足りない場合を考慮 sTime = ' ' + sTime; var nLen = sTime.length; // 時刻を分解(文字列の右から取得) nHour = JsCom_Number( sTime.substring( nLen - 4, nLen - 2 ) ); // 時間 nMin = JsCom_Number( sTime.substring( nLen - 2, nLen ) ); // 分 } // 時刻文字列が「HH:MM」の場合 else{ var arTimeCol = sTime.split( ":" ); n = arTimeCol.length - 1; if( n >= 0 ) nMin = JsCom_Number( arTimeCol[n] ); // 分 n--; if( n >= 0 ) nHour = JsCom_Number( arTimeCol[n] ); // 時間 n--; } } // 編集フラグにより戻り値を分ける if( nEdit == JPCOM_TIMETYPE_HM ){ // HH:MM return JsCom_FormatZero( nHour.toString(), 2 ) + ":" + JsCom_FormatZero( nMin.toString(), 2 ); } } ///////////////////////////////////////////////////////////////////////////// // 時刻整形(時分) // パラメータ // objText フォームエレメントオブジェクト(text又はtextarea) // nEdit 編集フラグ // 戻り値 // boolean :true // ※ 詳細はJsCom_FormatTime_HMを参照して下さい。 ///////////////////////////////////////////////////////////////////////////// function JsCom_TextFormatTime_HM( objText, nEdit ) { objText.value = JsCom_FormatTime_HM( objText.value, nEdit ); return true; } ///////////////////////////////////////////////////////////////////////////// // 時刻の計算 // パラメータ // sTime 時刻文字列(「HH:MM:SS」or「HHMMSS」) // nType 計算フラグ(※ 定義が上記に設定されています) // nTime 求める時間 // 戻り値 // 計算した後の時刻文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_AddDec_Time( sTime, nType, nTime ) { var sToday = ""; var sDate = ""; var sHours = ""; var sMin = ""; var sSec = ""; // 引数のチェック // 時刻が正しく設定されていない場合 if( JsCom_IsSpace( sTime ) == true ) return( "" ); if( JsCom_IsTime2( sTime ) == false ) return( "" ); // 計算フラグが正しく設定されていない場合 if( nType != JPCOM_KEITYPE_HOUR && nType != JPCOM_KEITYPE_MIN && nType != JPCOM_KEITYPE_SEC ) return( "" ); // 求める時間が正しく設定されていない場合 if( isNaN( nTime ) == true ) return( "" ); // 時刻の整形(HH:MM:SS型) sTime = JsCom_FormatTime_HMS( sTime, JPCOM_TIMETYPE_HMS ); // 本日の日付を取得(Dummy) sToday = JsCom_GetNow_DateTime( JPCOM_NOWTYPE_YMD ); // 日付と入力した時刻をくっつける sDate = sToday + " " + sTime; var dtDate = new Date( sDate ); // 時刻の計算 if( nType == JPCOM_KEITYPE_HOUR ){ // 時間 dtDate.setTime( dtDate.getTime() + ( 1000 * 60 * 60 * nTime ) ); } if( nType == JPCOM_KEITYPE_MIN ){ // 分 dtDate.setTime( dtDate.getTime() + ( 1000 * 60 * nTime ) ); } if( nType == JPCOM_KEITYPE_SEC ){ // 秒 dtDate.setTime( dtDate.getTime() + ( 1000 * nTime ) ); } // 計算した時刻を分解する sHours = dtDate.getHours().toString(); sMin = dtDate.getMinutes().toString(); sSec = dtDate.getSeconds().toString(); return JsCom_FormatZero( sHours, 2 ) + ":" + JsCom_FormatZero( sMin, 2 ) + ":" + JsCom_FormatZero( sSec, 2 ); } ///////////////////////////////////////////////////////////////////////////// // 分を時間に変換 // パラメータ // nMinute 分 // 戻り値 // 時間(HH:MM) ///////////////////////////////////////////////////////////////////////////// function JsCom_MinToTime( nMinute ) { var nHour = 0; var nMin = 0; // 分を時間に変換 nHour = parseInt( nMinute / 60 ); // 時間 nMin = nMinute % 60; // 分 return JsCom_FormatZero( nHour.toString(), 2 ) + ":" + JsCom_FormatZero( nMin.toString(), 2 ); } ///////////////////////////////////////////////////////////////////////////// // 時間を分に変換 // パラメータ // sTime 時間(HH:MM) // 戻り値 // 分(MM) ///////////////////////////////////////////////////////////////////////////// function JsCom_TimeToMin( sTime ) { var nHour = 0; var nMin = 0; // 時間・分を分解 var arTimeCol = sTime.split( ":" ); n = arTimeCol.length - 1; if( n >= 0 ) nMin = JsCom_Number( arTimeCol[n] ); // 分 n--; if( n >= 0 ) nHour = JsCom_Number( arTimeCol[n] ); // 時間 n--; // 分を計算 nMin = nMin + ( nHour * 60 ); return( nMin.toString() ); } ///////////////////////////////////////////////////////////////////////////// // 時間を秒に変換 // パラメータ // sTime 時間(HH:MM:SS) // 戻り値 // 秒(SS) ///////////////////////////////////////////////////////////////////////////// function JsCom_TimeToSec( sTime ) { var nHour = 0; var nMin = 0; var nSec = 0; // 時間・分・秒を分解 var arTimeCol = sTime.split( ":" ); n = arTimeCol.length - 1; if( n >= 0 ) nSec = JsCom_Number( arTimeCol[n] ); // 秒 n--; if( n >= 0 ) nMin = JsCom_Number( arTimeCol[n] ); // 分 n--; if( n >= 0 ) nHour = JsCom_Number( arTimeCol[n] ); // 時間 n--; // 秒を計算 nSec = nSec + ( nMin * 60 ) + ( nHour * 3600 ); return( nSec.toString() ); } ///////////////////////////////////////////////////////////////////////////// // 区切り文字の設定(年月日) // パラメータ // sYear 年 // sMonth 月 // sDay 日 // 戻り値 // 設定後の日付文字列(YYYY/MM/DD) ///////////////////////////////////////////////////////////////////////////// function JsCom_SetSplit( sYear, sMonth, sDay ) { return JsCom_FormatZero( sYear, 4 ) + "/" + JsCom_FormatZero( sMonth, 2 ) + "/" + JsCom_FormatZero( sDay, 2 ); } ///////////////////////////////////////////////////////////////////////////// // 区切り文字の設定(年月日時分) // パラメータ // sYear 年 // sMonth 月 // sDay 日 // sHour 時 // sMin 分 // 戻り値 // 設定後の日付&時刻文字列(YYYY/MM/DD HH:MM) ///////////////////////////////////////////////////////////////////////////// function JsCom_SetSplit2( sYear, sMonth, sDay, sHour, sMin ) { return JsCom_FormatZero( sYear, 4 ) + "/" + JsCom_FormatZero( sMonth, 2 ) + "/" + JsCom_FormatZero( sDay, 2 ) + " " + JsCom_FormatZero( sHour, 2 ) + ":" + JsCom_FormatZero( sMin, 2 ); } ///////////////////////////////////////////////////////////////////////////// // 区切り文字の設定(年月日時分秒) // パラメータ // sYear 年 // sMonth 月 // sDay 日 // sHour 時 // sMin 分 // sSec 秒 // 戻り値 // 設定後の日付&時刻文字列(YYYY/MM/DD HH:MM:SS) ///////////////////////////////////////////////////////////////////////////// function JsCom_SetSplit3( sYear, sMonth, sDay, sHour, sMin, sSec ) { return JsCom_FormatZero( sYear, 4 ) + "/" + JsCom_FormatZero( sMonth, 2 ) + "/" + JsCom_FormatZero( sDay, 2 ) + " " + JsCom_FormatZero( sHour, 2 ) + ":" + JsCom_FormatZero( sMin, 2 ) + ":" + JsCom_FormatZero( sSec, 2 ); } ///////////////////////////////////////////////////////////////////////////// // システム日付・時刻の取得 // パラメータ // nEdit 編集フラグ(※ 定義が上記に設定されています。) // 戻り値 // 編集フラグにより返される文字列が定義の通り変化する // 定義以外だった場合、Nullを返す ///////////////////////////////////////////////////////////////////////////// function JsCom_GetNow_DateTime( nEdit ) { var nYear; var nMonth; var nDay; var nHour; var nMin; var nSec; // 編集フラグが正しく設定されていない場合、空白を返す if( nEdit != JPCOM_NOWTYPE_YMD && nEdit != JPCOM_NOWTYPE_HMS && nEdit != JPCOM_NOWTYPE_YMDHMS && nEdit != JPCOM_NOWTYPE_YEAR && nEdit != JPCOM_NOWTYPE_MONTH && nEdit != JPCOM_NOWTYPE_DAY && nEdit != JPCOM_NOWTYPE_HOUR && nEdit != JPCOM_NOWTYPE_MIN && nEdit != JPCOM_NOWTYPE_SEC ){ return( "" ); } // システム日付・時刻を取得 var dtToday = new Date(); nYear = JsCom_GetYear( dtToday ); // 年 nMonth = dtToday.getMonth() + 1; // 月 nDay = dtToday.getDate(); // 日 nHour = dtToday.getHours(); // 時 nMin = dtToday.getMinutes(); // 分 nSec = dtToday.getSeconds(); // 秒 // 編集フラグにより戻り値を分ける if( nEdit == JPCOM_NOWTYPE_YMD ){ // YYYY/MM/DD return JsCom_FormatZero( nYear.toString(), 4 ) + "/" + JsCom_FormatZero( nMonth.toString(), 2 ) + "/" + JsCom_FormatZero( nDay.toString(), 2 ); } if( nEdit == JPCOM_NOWTYPE_HMS ){ // HH:MM:SS return JsCom_FormatZero( nHour.toString(), 2 ) + ":" + JsCom_FormatZero( nMin.toString(), 2 ) + ":" + JsCom_FormatZero( nSec.toString(), 2 ); } if( nEdit == JPCOM_NOWTYPE_YMDHMS ){ // YYYY/MM/DD HH:MM:SS return JsCom_FormatZero( nYear.toString(), 4 ) + "/" + JsCom_FormatZero( nMonth.toString(), 2 ) + "/" + JsCom_FormatZero( nDay.toString(), 2 ) + " " + JsCom_FormatZero( nHour.toString(), 2 ) + ":" + JsCom_FormatZero( nMin.toString(), 2 ) + ":" + JsCom_FormatZero( nSec.toString(), 2 ); } if( nEdit == JPCOM_NOWTYPE_YEAR ){ // YYYY return JsCom_FormatZero( nYear.toString(), 4 ); } if( nEdit == JPCOM_NOWTYPE_MONTH ){ // MM(月) return JsCom_FormatZero( nMonth.toString(), 2 ); } if( nEdit == JPCOM_NOWTYPE_DAY ){ // DD return JsCom_FormatZero( nDay.toString(), 2 ); } if( nEdit == JPCOM_NOWTYPE_HOUR ){ // HH return JsCom_FormatZero( nHour.toString(), 2 ); } if( nEdit == JPCOM_NOWTYPE_MIN ){ // MM(分) return JsCom_FormatZero( nMin.toString(), 2 ); } if( nEdit == JPCOM_NOWTYPE_SEC ){ // SS return JsCom_FormatZero( nSec.toString(), 2 ); } } ///////////////////////////////////////////////////////////////////////////// // 全角を半角に変換 // パラメータ // sZen 全角文字列 // 戻り値 // 半角文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_ZenToHan( sZen ) { var i; var intIndex; var sConvHan = " !#$%&'()*+-/.,`:;<>=?[]\\{}^~_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var sConvZen = " !#$%&’()*+−/.,‘:;<>=?[]¥{}^〜_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var sWork = sZen; var nKanjiLen = "あ".length; for( i = 0; i < sWork.length; i += nKanjiLen ){ intIndex = sConvZen.indexOf( sWork.substring( i, i + nKanjiLen ) ) if( intIndex >= 0 ){ sWork = sWork.substring( 0, i ) + sConvHan.substring( intIndex / nKanjiLen, intIndex / nKanjiLen + 1 ) + sWork.substring( i + nKanjiLen, sWork.length ); } } return sWork; } ///////////////////////////////////////////////////////////////////////////// // 半角を全角に変換 // パラメータ // sHan 半角文字列 // 戻り値 // 全角文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_HanToZen( sHan ) { var i; var intIndex; var sConvZen = " !#$%&’()*+−/.,‘:;<>=?[]¥{}^〜_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var sConvHan = " !#$%&'()*+-/.,`:;<>=?[]\\{}^~_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var sWork = sHan; var nKanjiLen = "あ".length; for( i = 0; i < sWork.length; i += nKanjiLen ){ intIndex = sConvHan.indexOf( sWork.substring( i, i + nKanjiLen ) ) if( intIndex >= 0 ){ sWork = sWork.substring( 0, i ) + sConvZen.substring( intIndex / nKanjiLen, intIndex / nKanjiLen + 1 ) + sWork.substring( i + nKanjiLen, sWork.length ); } } return sWork; } ///////////////////////////////////////////////////////////////////////////// // 文字列を数値に変換 // パラメータ // sValue 数値変換可能な文字列(※ 最大15桁) // 戻り値 // 数値(IntまたはFloat) ///////////////////////////////////////////////////////////////////////////// function JsCom_Number( sValue ) { var i; var nCount; var sWork; // 前方の"0"," "を削除するためそれ以外を探す nCount = 0; for( i = 0; i < sValue.length; i++ ){ sWork = sValue.charAt( i ); if( sWork == ' ' || sWork == '0' ){ nCount++; } else { break; } } // すべて"0"又は" "だったら0(数値)を返す if( sValue.length == nCount ){ return 0; } // 先頭の"0"又は" "を除外する sValue = sValue.substring( nCount, sValue.length ); // 文字列が数値ではない場合0(数値)を返す if( JsCom_IsNumber( sValue ) == false ){ return 0; } if( sValue.indexOf( '.' ) < 0 ){ return parseInt( sValue ); } else { return parseFloat( sValue ); } } ///////////////////////////////////////////////////////////////////////////// // 数値整形:0詰め // パラメータ // sValue 数値文字列 // nLen 整形後の文字列の長さ // 戻り値 // 先頭に0が埋まった数値文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_FormatZero( sValue, nLen ) { var sWork = ""; var i; for( i = 0; i < nLen - sValue.length; i++ ){ sWork += "0"; } return sWork + sValue; } ///////////////////////////////////////////////////////////////////////////// // 数値整形:0詰め // パラメータ // objText フォームエレメントオブジェクト(text又はtextarea) // nLen 整形後の文字列の長さ // 戻り値 // boolean :true ///////////////////////////////////////////////////////////////////////////// function JsCom_TextFormatZero( objText, nLen ) { objText.value = JsCom_FormatZero( objText.value, nLen ); return true; } ///////////////////////////////////////////////////////////////////////////// // 数値整形:千単位の区切りにカンマを付ける // パラメータ // sValue 数値文字列 // 戻り値 // 千単位にカンマが付いた数値文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_FormatComma( sValue ) { var i = 0; var nLen = 0; var nIndex = 0; var nComma = 0; var sWork = sValue; // 数値ではない場合、空白を返す if( JsCom_IsNumber( sWork ) == false ) return( "" ); // 文字列の長さを取得 nLen = sWork.length; // 小数点がある位置を取得 nIndex = sWork.indexOf( '.' ); // 小数点のある数値文字列の場合、小数点前までの文字列の長さを取得 if( nIndex >= 0 ){ nLen = nIndex; } // 文字列の長さが4文字以下の場合、処理を行なわない if( nLen < 4 ){ return ( sWork ); } // カンマが必要な最初の位置を調べる nComma = nLen % 3; if( nComma == 0 ){ nComma = 3; // 千単位 } // 数値文字列が負でカンマ位置が"-"の後の場合、 // カンマが必要な位置を次の千単位まで移動する if( JsCom_Number( sWork ) < 0 && nComma == 1){ nComma = nComma + 3; } // 千単位の区切りにカンマを付ける // 小数点のある数値文字列の場合、小数点前のまでの文字列にカンマをつける if( nIndex >= 0 ){ for( i = nComma; i < sWork.indexOf( '.' ); i += nComma ){ sWork = sWork.substring( 0, i ) + "," + sWork.substring( i, sWork.length ); nComma = 3 + 1; // 千単位 + カンマ文字数 } } else{ for( i = nComma; i < sWork.length; i += nComma ){ sWork = sWork.substring( 0, i ) + "," + sWork.substring( i, sWork.length ); nComma = 3 + 1; // 千単位 + カンマ文字数 } } return( sWork ); } ///////////////////////////////////////////////////////////////////////////// // 数値整形:区切りのカンマをはずす // パラメータ // sValue 数値文字列 // 戻り値 // カンマをはずした数値文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_FormatNotComma( sValue ) { var i; var nLen = 0; var sWork = ""; // 区切りのカンマをはずす var arValueCol = sValue.split( "," ); nLen = arValueCol.length; for( i = 0; i < nLen; i++ ){ sWork += arValueCol[i]; } return( sWork ); } ///////////////////////////////////////////////////////////////////////////// // 数値の端数処理 // パラメータ // sValue 数値文字列 // nEdit 編集フラグ(※ 定義が上記に設定されています) // 戻り値 // 端数処理された数値文字列 // ・四捨五入 例>>(2.8):3, (-2.8):-3, (2.2):2, (-2.2):-2] // ・切り上げ 例>>(2.8):3, (-2.8):-3, (2.2):3, (-2.2):-3] // ・切り捨て 例>>(2.8):2, (-2.8):-2, (2.2):2, (-2.2):-2] ///////////////////////////////////////////////////////////////////////////// function JsCom_NmbHasuu( sValue, nEdit ) { var nValue = 0; // 数値ではない場合、空白を返す。 if( JsCom_IsNumber( sValue ) == false ) return( "" ); // 編集フラグが設定されているものではない場合 if( nEdit != JPCOM_HASUUTYPE_ROUND && nEdit != JPCOM_HASUUTYPE_FLOOR && nEdit != JPCOM_HASUUTYPE_CEIL ) return( "" ); // 数値化する nValue = JsCom_Number( sValue ); if( nEdit == JPCOM_HASUUTYPE_ROUND ){ // 四捨五入 return( Math.round( nValue ) ); } // 数値が正の時 if( nValue >= 0 ){ if( nEdit == JPCOM_HASUUTYPE_FLOOR ){ // 切り捨て return( Math.floor( nValue ) ); } if( nEdit == JPCOM_HASUUTYPE_CEIL ){ // 切り上げ return( Math.ceil( nValue ) ); } } // 数値が負の時 else{ if( nEdit == JPCOM_HASUUTYPE_FLOOR ){ // 切り捨て return( Math.ceil( nValue ) ); } if( nEdit == JPCOM_HASUUTYPE_CEIL ){ // 切り上げ return( Math.floor( nValue ) ); } } } ///////////////////////////////////////////////////////////////////////////// // Enterキーで項目移動 // パラメータ // win windowオブジェクト // 戻り値 // 先頭に0が埋まった数値文字列 ///////////////////////////////////////////////////////////////////////////// function JsCom_onEnter( win ) { // Button,TextArea以外は変換 if( win.event.srcElement.type != "button" && win.event.srcElement.type != "textarea" ){ // Enterが押されたらTABに変換 if( win.event.keyCode == 13 ){ win.event.keyCode = 9; } } } ///////////////////////////////////////////////////////////////////////////// // 年の取得 // パラメータ // dtDate Dateオブジェクト // 戻り値 // 年(YYYY) ///////////////////////////////////////////////////////////////////////////// function JsCom_GetYear( dtDate ) { var nYear = 0; nYear = dtDate.getYear(); // 年が999以下の場合、1900を足す if( nYear <= 999 ) nYear = nYear + 1900; return JsCom_FormatZero( nYear.toString(), 4 ); }