2011-03-15 5 views
0

インターネット上で次のjQueryコードが見つかりましたが、すぐに小数点(ASCIIコード46)を受け入れないという欠点がありました。それを可能にするようだ。jQuery/javascriptを使用して価格フィールドの入力を制限する

現時点では、期間は無視され、代わりに123を取得するため、1.23のような価格を入力することはできません。

これは誰もが動作していないことを見つけることができますか?

// 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

キーボードイベントを扱うとクロスブラウザの互換性のそれらを作るとき、私はそれは非常に有用であることが判明。

こちらがお役に立てば幸いです。

関連する問題