日期:2014-05-20  浏览次数:20438 次

Jquery 文本框 调用方法问题
HTML code

01.;(function($){     
02.     $.fn.onlyAllowEnter = function(settings){  
03.         options = $.extend({}, $.fn.onlyAllowEnter.defaults, settings);  
04.         if(this.length == 0){  
05.                debug('Selector invalid or missing!');  
06.                return ;  
07.           }else if(this.length > 1){  
08.             return this.each(function() {  
09.               $.fn.onlyAllowEnter.apply($(this), [settings]);  
10.             });  
11.          }  
12.           
13.         switch(options['type']){  
14.             case 'num':  
15.                 $(this).unbind('keydown').keydown(allowEnterNumber);  
16.                break;  
17.             case 'ch':               
18.                $(this).unbind('keydown').keydown(allowEnterChar);  
19.                break;  
20.             case 'numch':  
21.                $(this).unbind('keydown').keydown(allowEnterNumberOrChar);  
22.                break;  
23.             case 'zto':  
24.                $(this).unbind('keydown').keydown(allowEnterNumberZero2One);  
25.                break;  
26.             case 'fnum':  
27.                $(this).unbind('keydown').keydown(allowEnterFloat);  
28.                break;  
29.             default:  
30.                return;  
31.         }  
32.           
33.     };  
34.      
35.      
36.     function debug(message){  
37.         if(!window.console){  
38.             window.console = {};  
39.             window.console.log = function(){  
40.                return;  
41.             }  
42.         }  
43.         window.console.log(message + ' ');       
44.     };  
45.        
46.     /** 
47.      * 设置文本框输入限制的默认配置 
48.      *  type: 文本框只能输入的类型,合法的值有: 
49.      *          num: 只允许是数字,ch: 只能是字母,numch: 数字或字母,zto: 0-1值浮点数,fnum: 浮点数 
50.      *  len: 允许输入的最大个数 
51.      *  intLen: 当为浮点数时允许的整数的最大位数, 默认为:0 不限制,如果为zto是此属性无作用 
52.      *  flatLen: 当为浮点数时允许的小数部分的最大位数。 
53.      */  
54.     $.fn.onlyAllowEnter.defaults = {  
55.             'type': '',  
56.             'len': 0,  
57.             'intLen': 0,  
58.             'flatLen': 0     
59.     };  
60.       
61.      /** 
62.       * 方法说明 
63.       *      只允许某个文本框中输入0~1之间的数值。当用户输入数值时, 
64.       *    会自动在输入的数值前面添加'0.'; 
65.       * 参数说明: 
66.       *     @param element input文本框对象 
67.       * 使用方式: 
68.       *     为指定的文本框绑定onKeyDown事件, 
69.       */  
70.     function allowEnterNumberZero2One(){  
71.         var keyCode = event.keyCode;  
72.         var _val = $(this).val();  
73.         if(_val == '' || !(/^0\./).test(_val)){  
74.            $(this).val('0.');  
75.         }  
76.         if(!onlyNumber(keyCode)){  
77.            return false;  
78.         }  
79.        var len = options['flatLen'];  
80.        _val = $(this).val().substring(2);  
81.        debug(_val);  
82.        if(len != undefined && len != 0 && _val.length >= len && isBackspace(keyCode)){  
83.           return false;  
84.        }         
85.        return true;  
86.     };  
87.       
88.     /**  
89.      * 方法说明: 
90.      *     判断输入的数值是否为数字、删除、退格、左移或右移键 
91.      * 参数说明: 
92.      *  @param keyCode 输入的键盘的键值 
93.      */  
94.     function onlyNumber(keyCode){  
95.         if(isBackspace(keyCode) && (keyCode > 57 || keyCode < 48)){  
96.             return false;  
97.         }  
98.         return true;  
99.     };  
100.       
101.     function isBackspace(keyCode){   
102.        return keyCode != 8 && keyCode != 46 && keyCode != 37 && keyCode != 39;  
103.     }  
104.       
105.     /** 
106.      * 方法说明: 
107.      *   设置一个文本框中可以输入数值或浮点数。 
108.      * 参数说明: 
109.      *   @param element input文本框对象 
110.      * 使用方式 
111.      *   为指定的文本框绑定onKeyDown事件 
112.      */  
113.     function allowEnterFloat(){  
114.        var keyCode = event.keyCode;  
115.        var _val = $(this).val();  
116.        if(keyCode == 190){  
117.           if(_val == ''){  
118.              $(this).val('0');  
119.           }else if(_val.indexOf('.') != -1){  
120.              return false;  
121.           }  
122.        }  
123.        var ilen = options['intLen'];  
124.        var flen = options['flatLen'];  
125.        return  onlyNumber(keyCode) || keyCode == 190;  
126.     };  
127.        
128.      /** 
129.       * 方法说明: 
130.       *   设置一个文本框中只能输入字母 
131.       * 参数说明: 
132.       *   @param {HTMLObject} element input元素对象 
133.       *   @param {Number} len 文本框中允许输入的字母个数,如果为空则为不限制 
134.       */       
135.    function  allowEnterChar(){  
136.        var keyCode = event.keyCode;  
137.        if(isBackspace(keyCode) && (keyCode < 65 || keyCode > 90)){  
138.           return false;  
139.        }  
140.          
141.        var len = options['len'];  
142.        var val = $(this).val();  
143.        if(len != undefined  && len != 0 && (val.length >= len) && isBackspace(keyCode)){  
144.           return false;  
145.        }  
146.        return true;  
147.    };  
148.      
149.    /** 
150.     * 方法说明: 
151.     *    设置某个文本框中只能输入数字 
152.     * 方法说明: 
153.     *    @param {HTMLObject} element input元素对象 
154.     *    @param {Number} len 允许输入的数字的个数,当没指定时为无限制  
155.     */  
156.    function allowEnterNumber(){  
157.        var keyCode = event.keyCode;  
158.         if(!onlyNumber(keyCode)){  
159.            return false;  
160.         }  
161.         var _val = $(this).val();  
162.         var len = options['len'];  
163.         if(len != undefined && len != 0 && (_val.length >= len) && isBackspace(keyCode)){  
164.             return false;  
165.         }  
166.         return true;  
167.    };  
168.      
169.    /** 
170.     * 方法说明: 
171.     *    设置一个文本框只能输入数字或字母 
172.     * 参数说明: 
173.     *    @param {HTMLObject} element  input文本框对象 
174.     *    @param {Number} len 允许输入的字母或字母的最大数量 
175.     */  
176.    function allowEnterNumberOrChar(){  
177.        return allowEnterChar() || allowEnterNumber();  
178.    }     
179.})(jQuery);