al final he cambiado la función por esta que ademas es mas fácil adaptarla a cambios y ya funciona...
me faltaria pulir el mensaje de error para que solo salga cuando pulsen una tecla incorrecta, pero bueno. pongo la solución por si a alguien le sirve
Código:
//comprobamos que los datos sean numeros
function Comprobarnum(e) {
// Variables que definen los caracteres permitidos
var numeros = "0123456789,-";
var teclas_especiales = [37, 39, 46, 190, 188, 9, 173]; //46 = Supr, 37 = flecha izquierda, 39 = flecha derecha
// Obtener la tecla pulsada
var evento = e || window.event;
var tecla = evento.charCode || evento.keyCode;
var caracter = String.fromCharCode(tecla);
// Comprobar si la tecla pulsada es alguna de las teclas especiales
var tecla_especial = false;
for(var i in teclas_especiales) {
if(tecla == teclas_especiales[i]) {
tecla_especial = true;
break;
}
}
// Comprobar si la tecla pulsada se encuentra en los caracteres permitidos
var chachi = numeros.indexOf(caracter) != -1 || tecla_especial;
// if ((chachi == false) || (tecla_especial == false)) { $().toastmessage('showToast', { text : 'Solo pueden introducirse numeros enteros' , sticky : false, type : 'notice' }); }
return chachi;
}
y la llamo con eso:
<input type="text" name="cantidad" onkeypress="return Comprobarnum(event)">