日期:2014-05-20 浏览次数:20438 次
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);