2011-03-15 52 views
0

我在網上找到了下面的jQuery代碼,但是我很快就發現它有一個不足之處,那就是它不接受小數點(ascii code 46) - 即使代碼似乎允許它。使用jQuery/javascript來限制價格字段輸入

目前,我無法輸入像1.23這樣的價格,因爲期間被忽略,我得到123。

任何人都可以發現這不起作用嗎?

// Numeric only control handler 
$.fn.ForceNumericOnly = 
function() 
{ 
    return this.each(function() 
    { 
     $(this).keydown(function(e) 
     { 
      var key = e.charCode || e.keyCode || 0; 

      // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY 
      return (
       key == 8 || 
       key == 9 || 
       key == 46 || 
       (key >= 37 && key <= 40) || 
       (key >= 48 && key <= 57) || 
       (key >= 96 && key <= 105)); 
     }) 
    }) 
}; 

我使用的插件是這樣的:

$(function(){ 
    $('#price_field').ForceNumericOnly(); 
}); 

回答

0

就在.(代碼190和110)增加了檢查:

// Numeric only control handler 
$.fn.ForceNumericOnly = 
function() 
{ 
    return this.each(function() 
    { 
     $(this).keydown(function(e) 
     { 
      var key = e.charCode || e.keyCode || 0; 

      // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY 
      return (
       key == 8 || 
       key == 9 || 
       key == 46 || 
       key == 190 || // normal . 
       key == 110 || // keypad . 
       (key >= 37 && key <= 40) || 
       (key >= 48 && key <= 57) || 
       (key >= 96 && key <= 105)); 
     }) 
    }) 
}; 
0

您應該添加鍵碼190接受 「」

// Numeric only control handler 
$.fn.ForceNumericOnly = function() { 
return this.each(function() 
{ 
    $(this).keydown(function(e) 
    { 
     var key = e.charCode || e.keyCode || 0; 

     // allow dot, backspace, tab, delete, arrows, numbers and keypad numbers ONLY 
     return (
      key == 190 || 
      key == 8 || 
      key == 9 || 
      key == 46 || 
      (key >= 37 && key <= 40) || 
      (key >= 48 && key <= 57) || 
      (key >= 96 && key <= 105)); 
    }) 
}) 
}; 
0

您需要包含兩個小數點的190和110。

0
// Numeric only control handler 
$.fn.ForceNumericOnly = 
function() 
{ 
    return this.each(function() 
    { 
     $(this).keydown(function(e) 
     { 
      var key = e.charCode || e.keyCode || 0; 

      // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY 
      return (
       key == 190 || //add this line. 190 is the keycode for a period 
       key == 110 || //and this line. 110 is the keycode for a decimal 
       key == 8 || 
       key == 9 || 
       key == 46 || 
       (key >= 37 && key <= 40) || 
       (key >= 48 && key <= 57) || 
       (key >= 96 && key <= 105)); 
     }) 
    }) 
}; 
1

的其他用戶已經幾乎回答了你的問題了,但我想向您提供此鏈接。

http://unixpapa.com/js/key.html

我發現它非常有用與鍵盤事件處理,並使其跨瀏覽器兼容時。

我希望這會有所幫助。