2010-05-25 6 views
8

J'utilisais Jquery Numeric plugin mais j'ai trouvé que ne fonctionne pas sur FireFox 3.6 sur Osx (ne permet pas de coller).Autoriser juste texte numérique sur le champ de texte d'entrée

Je suis à la recherche d'un plugin Jquery ou d'un extrait Javascript qui permet uniquement le texte numérique dans un champ de texte d'entrée.
Je les exigences suivantes:

  1. devrait permettre uniquement du texte numérique
  2. ne devrait pas permettre la ponctuation (,.)
  3. ne devrait pas permettre le texte en pointillé (-)
  4. devrait-elle permettre de coller juste pour numérique texte
  5. Multibrowser
  6. multiplateformes
+0

vous pouvez trouver ce http: // s utile tackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery –

+0

sont les tirets autorisés? par exemple. '-45'? – scunliffe

+0

@ scunliffe ajouté dans les exigences. – systempuntoout

Répondre

5

Merci à-dev-Dweller null j'ai résolu avec ce script:

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

+1 très mignon et rapide! ;) –

+1

Est venu ici pour partager presque la même chose; sauf que j'ai utilisé "\ d" au lieu de [0-9]. : 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); 
      } 
     }); 
    }); 
}; 

USAGES:

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

REMARQUE:

grâce à Insider d'avoir signalé le passé (cmd + v) pour MAC


gestionnaire d'événements clés RÉFÉRENCES:

+0

Bon travail, ça ne marche pas avec Firefox 3.6 sur OSX. – systempuntoout

+0

je ne peux pas le tester bro! Je n'ai pas de MAC et je n'en aurai jamais! ;-) pouvez-vous me dire ce qui ne fonctionne pas exactement? grazie! ;-) –

+0

Il ne permet pas de coller.Grazie a te :). – systempuntoout

0

Merci systempuntoout .. Je l'ai résolu cela avec le script suivant

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