lightboxtool.js

  利用方法

  
<SCRIPT 
	charset="euc-jp"
	language="javascript"
	type="text/javascript"
	src="http://homepage2.nifty.com/lightbox/lightboxtool.js">
</SCRIPT>
  



  String オブジェクトへのメソッド追加



formatNumber
formatNumber(prefix)
unformatNumber()
isNumber()
isGroup( strGroup )
isOnly( strGroup )
round( nPoint )
cut( nPoint )
up( nPoint )
trim()
isDate()

実行サンプル



  IFRAME の処理

IFRAME は便利な埋め込みウインドウですが、扱いが結構やっかいです。
また、クロスブラウジングするとなるとさらにやっかいなので作成しました。

1) IFRAME 作成用のコンストラクタは、lightboxtool のメソッドなのでいったん lightboxtool を作成
obj = new lightboxtool();

2) IFRAME を指定したエレメントの下に挿入する
iframe = new obj.openFrame( "area", "if", true, true );
※ id=area の下に挿入
※ id と name を "if" とする
※ ボーダー有のスクロール有

実行サンプル
メソッド一覧
プロパティ一覧

IFRAME を作成して、その中に FORM 送信した結果を表示します

  
// **********************************************************
// EUC-JP で記述しています
//
// 1) function 内で this を使用するとそれはオブジェクト
// 2) オブジェクトのインスタンスは、new で作成
// 3) this.名称 で、名称はプロパティにもメソッドにもなる
//
// ↓実装記述
// <SCRIPT
// 	charset="euc-jp"
// 	language="javascript"
// 	type="text/javascript"
// 	src="lightboxtool.js">
// </SCRIPT>
//
// **********************************************************
// ---------------------------------------------------------
// 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, '');
}

// ---------------------------------------------------------
// 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 = "<IFRAME";
		str += " name='" + name + "'";
		str += " id='" + name + "'";
		if ( border ) {
			str += " frameborder='1'";
		}
		else {
			str += " frameborder='0'";
		}
		if ( scrolling ) {
			str += " scrolling='yes'";
		}
		else {
			str += " scrolling='no'";
		}
			str += "></IFRAME>";
		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.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 = "<IFRAME";
			str += " name='" + name + "'";
			str += " id='" + name + "'";
			if ( border ) {
				str += " frameborder='1'";
			}
			else {
				str += " frameborder='0'";
			}
			if ( scrolling ) {
				str += " scrolling='yes'";
			}
			else {
				str += " scrolling='no'";
			}
				str += "></IFRAME>";
			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;
		}
	}
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ