1
// ********************************************************** // EUC-JP で記述しています // // 1) function 内で this を使用するとそれはオブジェクト // 2) オブジェクトのインスタンスは、new で作成 // 3) this.名称 で、名称はプロパティにもメソッドにもなる // // ↓実装記述 // // // ********************************************************** // ***************************************************************************** // http://www.hunlock.com/blogs/Ten_Javascript_Tools_Everyone_Should_Have // ***************************************************************************** // --------------------------------------------------------- // zzz,zzz,zz9 format // --------------------------------------------------------- String.prototype.formatNumber = function (prefix) { var num = this.valueOf(); prefix = prefix || ''; num += ''; var splitStr = num.split('.'); var splitLeft = splitStr[0]; var splitRight = splitStr.length > 1 ? '.' + splitStr[1] : ''; var regx = /(\d+)(\d{3})/; while (regx.test(splitLeft)) { splitLeft = splitLeft.replace(regx, '$1' + ',' + '$2'); } return prefix + splitLeft + splitRight; } String.prototype.unformatNumber = function () { var num = this.valueOf(); return num.replace(/([^0-9\.\-])/g, ''); } // ***************************************************************************** // hanbai : lightbox // ***************************************************************************** // --------------------------------------------------------- // only 0-9.- : true // --------------------------------------------------------- String.prototype.isNumber = function () { var num = this.valueOf(); var ret = num.replace(/([0-9\.\-])/g, ''); if ( ret != '' ) { return false; } return true; } // --------------------------------------------------------- // only strGroup like ("red,green,blue") : true // --------------------------------------------------------- String.prototype.isGroup = function ( strGroup ) { var str = this.valueOf(); var ar = strGroup.split( "," ); var i; for ( i = 0; i < ar.length; i++ ) { if ( ar[i] == str ) { return true; } } return false; } // --------------------------------------------------------- // only charGroup like ("0123456789") : true // --------------------------------------------------------- String.prototype.isOnly = function ( strGroup ) { var str = this.valueOf(); for ( i = 0; i < str.length; i++ ) { if ( strGroup.indexOf( str.substr( i, 1 ) ) == -1 ) { return false; } } return true; } // --------------------------------------------------------- // string round with point // --------------------------------------------------------- String.prototype.round = function ( nPoint ) { if ( arguments.length == 0 ) { nPoint = 0; } var num = parseFloat(this.valueOf()); var nOffset = Math.pow(10,nPoint); var ret = Math.round( num * nOffset ) / nOffset; return ret; } // --------------------------------------------------------- // cut like round // --------------------------------------------------------- String.prototype.cut = function ( nPoint ) { if ( arguments.length == 0 ) { nPoint = 0; } var num = parseFloat(this.valueOf()); var nOffset = Math.pow(10,nPoint); var ret = 0; if ( num >= 0 ) { ret = Math.floor( num * nOffset ) / nOffset; } else { ret = Math.ceil( num * nOffset ) / nOffset; } return ret; } // --------------------------------------------------------- // up like round // --------------------------------------------------------- String.prototype.up = function ( nPoint ) { if ( arguments.length == 0 ) { nPoint = 0; } var num = parseFloat(this.valueOf()); var nOffset = Math.pow(10,nPoint); var ret = 0; if ( num >= 0 ) { ret = Math.ceil( num * nOffset ) / nOffset; } else { ret = Math.floor( num * nOffset ) / nOffset; } return ret; } // --------------------------------------------------------- // trim // --------------------------------------------------------- String.prototype.trim = function ( ) { var str = ""; var regL = /^[ \s]+/; var regR = /[ \s]+$/; var len = arguments.length; // 内部メソッドとして使用する場合( 引数有 ) // String オブジェクト登録用( 引数なし ) str = this.valueOf(); str = str.replace(regL,""); str = str.replace(regR,""); return str; } // --------------------------------------------------------- // 日付チェック // --------------------------------------------------------- String.prototype.isDate = function ( ) { var str = this.valueOf(); if ( str == "" ) { return true; } if ( !str.match(/^\d{4}\/[\d]+\/[\d]+$/) ) { return false; } var parts = str.split( "/" ); var nYear = Number(parts[0]); var nMonth = Number(parts[1]) - 1; var nDay = Number(parts[2]); // 月,日の妥当性チェック if ( 0 <= nMonth && nMonth <= 11 && 1 <= nDay && nDay <= 31 ) { var dt = new Date(nYear, nMonth, nDay); if( isNaN(dt) ) { return false; } else if( dt.getFullYear() == nYear && dt.getMonth() == nMonth && dt.getDate() == nDay ) { return true; } else{ return false; } } else{ return false; } } function lightboxtool( ) { this.version = "20080305"; // ************************************************* // バージョン文字列を返す // // ↓実行例( 同じ結果 ) // alert( obj.getVersion() ) // alert( obj["getVersion"]() ); // alert( obj.version ); // alert( obj["version"] ); // ************************************************* this.getVersion = function( ) { return this.version; } // ************************************************* // String オブジェクトにメソッド追加 // // ↓内部 trim メソッドの登録方法 // obj = new lightboxtool(); // obj.registStringMethod( "trim", obj.trim ); // ************************************************* this.registStringMethod = function( funcString, func ) { String.prototype[funcString] = func; } // ************************************************* // 文字列のトリム // ************************************************* this.trim = function( ) { var str = ""; var regL = /^[ \s]+/; var regR = /[ \s]+$/; var len = arguments.length; // 内部メソッドとして使用する場合( 引数有 ) if ( len == 1 ) { str = arguments[0]; } // String オブジェクト登録用( 引数なし ) else { str = this.valueOf(); } str = str.replace(regL,""); str = str.replace(regR,""); return str; } // ************************************************* // プロパティ名の一覧を配列として返す // // ↓使用例 // a = obj.prop(); // for( key in a ) { // alert( a[key] ); // } // ************************************************* this.prop = function( ) { var arr = new Array(); var key; var idx = 0; for (key in this) { arr[idx] = key; idx++; } return arr; } // ************************************************* // 指定したオブジェクトの下に新しい IFRAME を作成 // ************************************************* this.openFrame = function( id, name, border, scrolling ) { this.name = name; // ************************************************* // コンストラクタ処理 // if = new obj.openFrame( "area", "selfid", true, true ); // ************************************************* this.div = document.createElement("div"); var obj = id if (typeof obj == 'string') { obj = window.document.getElementById(id); } if ( obj.parentNode ) { obj.parentNode.insertBefore(this.div, obj); obj.parentNode.insertBefore(obj,this.div); } else { obj.parentElement.insertBefore(this.div, obj); obj.parentElement.insertBefore(obj,this.div); } var str = "
"; this.div.innerHTML = str; this.iframe = window.document.getElementById(name); this.iframe.setAttribute("name", name); this.iframe.setAttribute("id", name); this.iframe.style.position = "relative"; this.iframe.style.width = "200px"; this.iframe.style.height = "200px"; this.win = this.iframe.contentWindow; this.doc = this.iframe.contentWindow.document; this.style = this.iframe.style; // ************************************************* // オブジェクト参照 // ************************************************* this.$ = function( id ) { return this.iframe.contentWindow.document.getElementById(id); } this.$2 = function( element ) { var len = arguments.length; switch( len ) { case 1: element = this.iframe.contentWindow.document.getElementsByName(element)[0]; break; case 2: element = this.iframe.contentWindow.document.getElementsByName(element); element = element[arguments[1]]; break; } return element; } this.$3 = function( element ) { var len = arguments.length; switch( len ) { case 1: element = this.iframe.contentWindow.document.getElementsByTagName(element)[0]; break; case 2: element = this.iframe.contentWindow.document.getElementsByTagName(element); element = element[arguments[1]]; break; } return element; } // ************************************************* // 絶対位置指定 // ************************************************* this.absolute = function( ) { this.iframe.style.position = "absolute"; } // ************************************************* // 相対位置指定 // ************************************************* this.relative = function( ) { this.iframe.style.position = "relative"; } // ************************************************* // 位置指定 // ************************************************* this.location = function( x, y ) { this.iframe.style.left = x + "px"; this.iframe.style.top = y + "px"; } // ************************************************* // src 属性のセット // ************************************************* this.url = function( url ) { this.iframe.src = url; } // ************************************************* // document.write // ************************************************* this.write = function( str ) { this.doc.write(str); } // ************************************************* // 非表示からの復帰 // ************************************************* this.open = function( ) { this.iframe.style.display = ''; this.iframe.style.visibility = 'visible'; } // ************************************************* // 場所を占有しない非表示 // ************************************************* this.hide = function( ) { this.iframe.style.display = 'none'; } // ************************************************* // 場所を占有する非表示 // ************************************************* this.close = function( ) { this.iframe.style.visibility = 'hidden'; } // ************************************************* // 再作成 // ************************************************* this.reset = function( ) { if ( this.div ) { this.div.parentNode.removeChild( this.div ); } else { this.div.parentElement.removeChild( this.div ); } this.div = document.createElement("div"); var obj = id if (typeof obj == 'string') { obj = window.document.getElementById(id); } if ( obj.parentNode ) { obj.parentNode.insertBefore(this.div, obj); obj.parentNode.insertBefore(obj,this.div); } else { obj.parentElement.insertBefore(this.div, obj); obj.parentElement.insertBefore(obj,this.div); } var str = "
"; this.div.innerHTML = str; this.iframe = window.document.getElementById(name); this.iframe.setAttribute("name", name); this.iframe.setAttribute("id", name); this.iframe.style.position = "relative"; this.iframe.style.width = "200px"; this.iframe.style.height = "200px"; this.win = this.iframe.contentWindow; this.doc = this.iframe.contentWindow.document; this.style = this.iframe.style; } } }
1
lightboxtool.js のテスト
データ入力
formatNumber : 引数を渡すとその文字列が先頭に付加される。
unformatNumber
isNumber : 入力値が0〜9.- で構成されているかどうかをチェック(未入力は OK)
isGroup : "aaa,bbb,ccc" のようにカンマでリストを指定する。(未入力はエラー)
isOnly : 未入力は OK
round( n ) : n は残す小数以下の桁数
cut( n ) : n は残す小数以下の桁数
up( n ) : n は残す小数以下の桁数
trim : 漢字スペースも対象( SCRIPT タグで charset="euc-jp" を忘れない )
isDate : フォ−マットは YYYY/M/D(M・Dは前に0があってもなくても良い)、未入力は OK
getVersion : lightboxtool のバージョン(
入力値不要
)
prop : lightboxtool のプロパティ(
入力値不要
)
openFrame :
入力値不要