テキストボックスに入力されるデータ型と長さを制限するjqueryプラグイン


テキストボックスに入力されるデータのタイプと長さを制限するjQueryプラグイン
   
;(function($){	 
	 $.fn.onlyAllowEnter = function(settings){
	 	 options = $.extend({}, $.fn.onlyAllowEnter.defaults, settings);
	 	 if(this.length == 0){
				debug('Selector invalid or missing!');
				return ;
		   }else if(this.length > 1){
			 return this.each(function() {
			   $.fn.onlyAllowEnter.apply($(this), [settings]);
		     });
		  }
	 	 
	 	 switch(options['type']){
	 	 	 case 'num':
	 	 	     $(this).unbind('keydown').keydown(allowEnterNumber);
	 	 	    break;
	 	 	 case 'ch':			    
	 	 	    $(this).unbind('keydown').keydown(allowEnterChar);
	 	 	    break;
	 	 	 case 'numch':
	 	 	    $(this).unbind('keydown').keydown(allowEnterNumberOrChar);
	 	 	    break;
	 	 	 case 'zto':
	 	 	    $(this).unbind('keydown').keydown(allowEnterNumberZero2One);
	 	 	    break;
	 	 	 case 'fnum':
	 	 	    $(this).unbind('keydown').keydown(allowEnterFloat);
	 	 	    break;
	 	 	 default:
	 	 	    return;
	 	 }
	 	 
	 };
	
	
	 function debug(message){
	 	 if(!window.console){
	 	 	 window.console = {};
	 	 	 window.console.log = function(){
	 	 	 	return;
	 	 	 }
	 	 }
	 	 window.console.log(message + ' ');	 	
	 };
	  
	 /**
	  *               
	  *  type:           ,     :
	  *          num:       ,ch:      ,numch:      ,zto: 0-1    ,fnum:    
	  *  len:          
	  *  intLen:                 ,    :0    ,   zto       
	  *  flatLen:                   。
	  */
	 $.fn.onlyAllowEnter.defaults = {
		     'type': '',
			 'len': 0,
			 'intLen': 0,
			 'flatLen': 0	
	 };
	 
	  /**
	   *     
	   *                 0~1     。        ,
	   *                 '0.';
	   *     :
	   *     @param element input     
	   *     :
	   *              onKeyDown  ,
	   */
     function allowEnterNumberZero2One(){
	     var keyCode = event.keyCode;
		 var _val = $(this).val();
		 if(_val == '' || !(/^0\./).test(_val)){
		    $(this).val('0.');
		 }
		 if(!onlyNumber(keyCode)){
		    return false;
		 }
        var len = options['flatLen'];
        _val = $(this).val().substring(2);
		debug(_val);
        if(len != undefined && len != 0 && _val.length >= len && isBackspace(keyCode)){
		   return false;
		}		
		return true;
	 };
	 
	 /** 
	  *     :
	  *                 、  、  、      
	  *     :
	  *  @param keyCode         
	  */
	 function onlyNumber(keyCode){
		 if(isBackspace(keyCode) && (keyCode > 57 || keyCode < 48)){
		     return false;
		 }
		 return true;
	 };
	 
	 function isBackspace(keyCode){ 
	    return keyCode != 8 && keyCode != 46 && keyCode != 37 && keyCode != 39;
	 }
	 
	 /**
	  *     :
	  *                     。
	  *     :
	  *   @param element input     
	  *     
	  *            onKeyDown  
	  */
	 function allowEnterFloat(){
	    var keyCode = event.keyCode;
		var _val = $(this).val();
		if(keyCode == 190){
	       if(_val == ''){
		      $(this).val('0');
		   }else if(_val.indexOf('.') != -1){
		      return false;
		   }
		}
		var ilen = options['intLen'];
		var flen = options['flatLen'];
		return  onlyNumber(keyCode) || keyCode == 190;
	 };
	  
      /**
       *     :
       *                 
       *     :
       *   @param {HTMLObject} element input    
       *   @param {Number} len              ,         
       */	  
	function  allowEnterChar(){
	    var keyCode = event.keyCode;
		if(isBackspace(keyCode) && (keyCode < 65 || keyCode > 90)){
		   return false;
		}
		
		var len = options['len'];
		var val = $(this).val();
		if(len != undefined  && len != 0 && (val.length >= len) && isBackspace(keyCode)){
		   return false;
		}
		return true;
	};
	
	/**
	 *     :
	 *                  
	 *     :
	 *    @param {HTMLObject} element input    
	 *    @param {Number} len           ,          
	 */
	function allowEnterNumber(){
	    var keyCode = event.keyCode;
		 if(!onlyNumber(keyCode)){
		    return false;
		 }
		 var _val = $(this).val();
		 var len = options['len'];
		 if(len != undefined && len != 0 && (_val.length >= len) && isBackspace(keyCode)){
		     return false;
		 }
		 return true;
	};
	
	/**
	 *     :
	 *                    
	 *     :
	 *    @param {HTMLObject} element  input     
	 *    @param {Number} len                
	 */
	function allowEnterNumberOrChar(){
		return allowEnterChar() || allowEnterNumber();
	}	
})(jQuery);