2010-05-25 15 views
8

Estaba usando el complemento Jquery Numeric, pero descubrí que no funciona en Firefox 3.6 en Osx (no permite pegar).Permitir solo texto numérico en el campo de texto de entrada

Estoy buscando un complemento de Jquery o un fragmento de Javascript que permita solo texto numérico en un campo de texto de entrada.
tengo los siguientes requisitos:

  1. debe permitir que acaba de texto numérico
  2. no deben permitir que puntuacion (,.)
  3. no deben permitir que el texto discontinua (-)
  4. debería permitir pegar sólo para numérico
  5. texto
  6. Multibrowser
  7. multiplataforma
+0

puede encontrar este útil http: // s tackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery –

+0

¿se permiten guiones? p.ej. '-45'? – scunliffe

+0

@scunliffe agregado en los requisitos. – systempuntoout

Respuesta

5

Gracias a Dev-nulo-habitante he resuelto con este script:

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

+1 ¡muy lindo y rápido! ;) –

+1

Vine aquí para compartir casi lo mismo; excepto que usé "\ d" en lugar de [0-9]. :PAG – 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); 
      } 
     }); 
    }); 
}; 

USO:

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

NOTA:

gracias a información privilegiada para señalar el pasado (cmd + v) para MAC


clave de controlador de eventos REFERENCIAS:

+0

Buen trabajo, no funciona con Firefox 3.6 en OSX. – systempuntoout

+0

no puedo probarlo hermano! ¡No tengo MAC y nunca tendré uno! ;-) ¿puedes decirme qué es exactamente lo que no funciona? ¡Grazie! ;-) –

+0

No permite pegar.Grazie a te :). – systempuntoout

0

Gracias systempuntoout .. he fijado con esta secuencia de comandos siguiente

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