Tengo la siguiente función que solo permite números al presionar teclas:

$('input').keypress(function(e) {
var a = [];
var k = e.which;

for (i = 48; i < 58; i++)
    a.push(i);

if (!($.inArray(k,a)>=0))
    e.preventDefault();
});​

No puedo permitir también puntos (código: 190). Aquí hay un violín: http://jsfiddle.net/umNuB/

0
domi771 4 sep. 2014 a las 02:16

3 respuestas

La mejor respuesta

Añadir

a.push(46);

Después de su ciclo y permitirá períodos.

2
David Lounsbrough 4 sep. 2014 a las 03:46

Creo que quieres validar la entrada solo el número flotante permitido, aquí la validación flotante de muestra

$('input').keypress(function(event) {
  if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
    event.preventDefault();
  }
});
1
kefy 3 sep. 2014 a las 22:25

En mi propio teclado e.which para . es 46; ¿de dónde sacaste 190? Por lo tanto mi código sería:

$('input').keypress(function(e) {
    var a = [46];
    var k = e.which;
    for (i = 48; i < 58; i++)
        a.push(i);

    if (!($.inArray(k,a)>=0))
        e.preventDefault();
});

Demo

0
PeterKA 3 sep. 2014 a las 22:25