jQuery 限制數字輸入

之前找的 plugin 有點雞婆,還會處理掉數字開頭的 0 ,所以再找一個不去判斷要把前面給去的 plugin ,整段 code 在下。

  1. (function($){    
  2.     $.fn.decimalOnly = function() {   
  3.        $(this).keydown(function(event) {   
  4.             // Allow: backspace, delete, tab, escape, and enter   
  5.             if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||    
  6.                  // Allow: Ctrl+A   
  7.                 (event.keyCode == 65 && event.ctrlKey === true) ||    
  8.                  // Allow: home, end, left, right   
  9.                 (event.keyCode >= 35 && event.keyCode <= 39)   
  10.                ) {   
  11.                      // let it happen, don't do anything   
  12.                      return;   
  13.             } else    
  14.             if (event.keyCode == 190) {  // period   
  15.                 if ($(this).val().indexOf('.') !== -1) // period already exists   
  16.                     event.preventDefault();   
  17.                 else  
  18.                     return;   
  19.             } else {   
  20.                 // Ensure that it is a number and stop the keypress   
  21.                 if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {   
  22.                     event.preventDefault();    
  23.                 }      
  24.             }   
  25.         });   
  26.     }   
  27.     
  28.     $.fn.numericOnly = function() {   
  29.         $(this).keydown(function(event) {   
  30.              // Allow: backspace, delete, tab, escape, and enter   
  31.              if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||    
  32.                   // Allow: Ctrl+A   
  33.                  (event.keyCode == 65 && event.ctrlKey === true) ||    
  34.                   // Allow: home, end, left, right   
  35.                  (event.keyCode >= 35 && event.keyCode <= 39)   
  36.                 ) {   
  37.                       // let it happen, don't do anything   
  38.                       return;   
  39.              } else {   
  40.                  // Ensure that it is a number and stop the keypress   
  41.                  if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {   
  42.                      event.preventDefault();    
  43.                  }      
  44.              }   
  45.          });   
  46.      }   
  47. })(jQuery);  

引入後再去使用就好了,除了整數外也可以限制輸入的格式為帶小數點的數字。
  1. $("#age").numericOnly();   
  2. $("#weight").decimalOnly();  

原文連結:
Writing a jQuery plugin to allow only numeric or decimal input

留言