モジュール化思想を書き換える前に書いたMy 97 DatePickerの例


最近ウェブサイトが登録されました.いくつかの例示的なコードを上に置いてもいいです.前に書いた文章を確認します.デモを整理して載せたいです.前に書いたコードはまだ足りないところが多いです.
前にコードを書いて、機能の実現をもっと重視します.重用性とモジュール化に対する考慮は比較的少ない.紙の上は結局浅いので、前の文章で書いたこの効果を書き直すことにしました.
My97 DatePickerの2つの日付範囲は30日を超えない.最初は2番目より小さく、現在の日付より大きくない.
picker 1.js  
var Picker1 = function(startEle,endEle,day){
	this.md = new Date();
	this.startEle = startEle;
	this.endEle = endEle;
	this.day = -day;
}

Picker1.prototype = {
	init:function(){
		//     。                   。       。  this。
		var that = this;
		document.getElementById(this.startEle).onfocus = function(){
			that.picker1rule(this);
		}
		document.getElementById(this.endEle).onfocus = function(){
			that.picker2rule(this);
		}
	},
	picker1rule:function(ele){
		//           
		
		var pickedfunBind = this.pickedFunc.bind(ele,this);
		var onclearedBind = this.clearedFun.bind({},this);

		WdatePicker({maxDate:'#F{$dp.$D(\''+this.endEle+'\')||\'new Date()\'}',minDate:'#F{$dp.$D(\''+this.endEle+'\',{d:'+this.day+'})}',onpicked:pickedfunBind,oncleared:onclearedBind})
	},
	pickedFunc:function(that){
		//           ,onpicked     
		var Y=$dp.cal.getP('y');
		var M=$dp.cal.getP('M');
		var D=$dp.cal.getP('d');

		M=parseInt(M)-1;
		D=parseInt(D) - that.day; //  30 ,      。
		var d = new Date()
		d.setFullYear(Y,M,D) //    

		var nowDate=new Date(); 
		//        ,             ,      md     。         。
		if(nowDate<=d){
			that.md=nowDate;
		}else{
			var month=d.getMonth()+1; //      (0 11);
			that.md=d.getFullYear()+"-"+month+"-"+d.getDate(); //   d       ,          
		}
		// console.log(that.md,that,'in picked');
	},
	clearedFun:function(that){
		//           ,onpicked     oncleared
		that.md=new Date();
		// console.log(that.md,that,'in clear');
	},
	picker2rule:function(ele){
		// console.log(this.md,this,"in picker2rule");
		WdatePicker({el:ele,minDate:'#F{$dp.$D(\''+this.startEle+'\')}',maxDate:this.md})
	}
};
datepicker.
<html>
<head>
	<meta charset="utf-8">
	<title>My97DatePicker  </title>
	<script type="text/javascript" src="../libs/My97DatePicker/WdatePicker.js"></script>
	<script type="text/javascript" src="picker1.js"></script>
	<link type="text/css" href="97.css" rel="stylesheet" media="all" />
</head>

<body>

	<h1>My97DatePicker    </h1>

	<article class="demo">
		<h2>1.       30 ,       ,  Picker1</h2>
		    :<input type="text" class="date_input" id="datepicker1"/>
		    :<input type="text" class="date_input" id="datepicker2"/>
	</article>


	<article class="demo">
		<h2>1.       15 ,       ,  Picker1</h2>
		    :<input type="text" class="date_input" id="datepicker3"/>
		    :<input type="text" class="date_input" id="datepicker4"/>
	</article>

	<script type="text/javascript">
		var picker1 = new Picker1("datepicker1","datepicker2",30);
		picker1.init();
		var picker2 = new Picker1("datepicker3","datepicker4",15);
		picker2.init();
	</script>


</body>
</html>
前の文章の中の実現を比較する.
少なくとも次のような利点がある.
1.呼び出しが簡単です.各inputにjsコードをたくさん書く必要はありません. コントロールのjsを導入するだけです.二つのコードを再起動します.着信開始日inputのid、終了日inputのid、および2つの日付の間の間隔.実現できる
		var picker1 = new Picker1("datepicker1","datepicker2",30);
		picker1.init();
2.再利用可能です 前のコードは、大域変数mdに依存して終了日の締切日を変更します.したがって、一つのページには一例しかない.今は新しい方法を使います.このmdは実例となる属性になる.実例の間は互いに影響しない.グローバル変数も汚染されません.
3.コード構造がより明確である.
使用上の注意:
1.
		var picker1 = new Picker1("datepicker1","datepicker2",30);
		picker1.init();
初期化はこの二つの入力ボックスの後ろの位置にします.もちろん、window.onloadの中に置いてもいいです.
2.picker 1にはまだ解決ie 8を加えてbindの解決をサポートしていません.
//IE9      bind   。
if (!Function.prototype.bind) { 
	Function.prototype.bind = function (oThis) { 
		if (typeof this !== "function") { 
			throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 
		} 
		var aArgs = Array.prototype.slice.call(arguments, 1), 
		fToBind = this, 
		fNOP = function () {}, 
		fBound = function () { 
			return fToBind.apply(this instanceof fNOP && oThis ? this: oThis, 
				aArgs.concat(Array.prototype.slice.call(arguments))); 
		}; 
		fNOP.prototype = this.prototype; 
		fBound.prototype = new fNOP(); 
		return fBound; 
	}; 
}
プレゼンテーションのアドレス:http://runningls.com/demos/97/datepicker.html