2010-05-25 8 views
8

Ich habe Jquery Numeric Plugin verwendet, aber ich fand, das funktioniert nicht auf FireFox 3.6 auf Osx (erlaubt das Einfügen nicht).Nur numerischen Text bei der Eingabe zulassen Textfeld

Ich suche ein Jquery-Plugin oder Javascript-Snippet, das nur numerischen Text in einem Eingabefeld erlaubt.
Ich habe folgende Anforderungen:

  1. Sollte erlauben nur numerische Text
  2. Interpunktion nicht zulassen sollte (.)
  3. sollte nicht gestrichelte Text ermöglichen (-)
  4. Einfügen erlauben sollte nur für numerische Text
  5. Multibrowser
  6. Multi-Plattform
+0

finden Sie diese nützliche http: // s tackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery –

+0

sind Striche erlaubt? z.B. '-45'? – scunliffe

+0

@scunliffe hinzugefügt in den Anforderungen. – systempuntoout

Antwort

5

Dank dev-null-Bewohner i mit diesem Skript gelöst habe:

jQuery('#input').bind('keyup blur',function(){ 
    jQuery(this).val(jQuery(this).val().replace(/[^0-9]/g,'')); } 
); 
+0

+1 sehr süß und schnell! ;) –

+1

Kam hierher, um fast dasselbe zu teilen; außer dass ich "\ d" anstelle von [0-9] verwendet habe. : P – WhyNotHugo

7

DEMO:http://so.devilmaycode.it/allowing-just-numeric-text-on-input-text-field/

jQuery.fn.onlyDigits = function() { 
    var k; 
    // little trick just in case you want use this: 
    $('<span></span>').insertAfter(this); 
    var $dText = $(this).next('span').hide(); 
    // Really cross-browser key event handler 
    function Key(e) { 
     if (!e.which && ((e.charCode || 
     e.charCode === 0) ? e.charCode: e.keyCode)) { 
     e.which = e.charCode || e.keyCode; 
     } return e.which; } 
    return $(this).each(function() { 
     $(this).keydown(function(e) { 
      k = Key(e); 
      return (
      // Allow CTRL+V , backspace, tab, delete, arrows, 
      // numbers and keypad numbers ONLY 
      (k == 86 && e.ctrlKey) || (k == 86 && e.metaKey) || k == 8 || k == 9 || k == 46 || (k >= 37 && k <= 40 && k !== 32) || (k >= 48 && k <= 57) || (k >= 96 && k <= 105)); 
     }).keyup(function(e) { 
      var value = this.value.replace(/\s+/,'-'); 
      // Check if pasted content is Number 
      if (isNaN(value)) { 
       // re-add stored digits if CTRL+V have non digits chars 
       $(this).val($dText.text()); 
      } else { // store digits only of easy access 
       $dText.empty().append(value); 
      } 
     }); 
    }); 
}; 

ANWENDUNG:

$("#onlydigits").onlyDigits(); 

HINWEIS:

dank Insider für die Vergangenheit den Hinweis auf (cmd + v) für MAC


Schlüsselereignishandler LITERATUR:

+0

Guter Job, es funktioniert nicht mit Firefox 3.6 unter OSX. – systempuntoout

+0

ich kann es nicht testen, bro! Ich habe keinen MAC und ich werde nie einen haben! Kannst du mir sagen, was genau nicht funktioniert? grazie! ;-) –

+0

Es lässt sich nicht einfügen.Grazie a te :). – systempuntoout

0

Dank systempuntoout .. Ich habe dieses Problem behebt mit folgenden Skript

$('#input').keyup(function() { 
    var $this = $(this); 
    $this.val($this.val().replace(/[^\d.]/g, ''));  
}); 
Verwandte Themen