テキストボックスに入力されるデータ型と長さを制限するjqueryプラグイン
4665 ワード
テキストボックスに入力されるデータのタイプと長さを制限する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);