Comunidad PHPeros
Lenguajes => JavaScript => Mensaje iniciado por: eduar2083 en 10 de Noviembre de 2012, 21:55:55 pm
-
Buenas. He realizado dicha validación en el evento keypress (jquery) pero se me ha presentado un problema: No me permite borrar, la tecla basckspace es ignorada y no surge efecto. Esto sucede con Mozilla Firefox y Opera, pero no con IE y Chrome. Este es el código que llevo hecho.
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
$(document).ready(function () {
// Manejo del evento
$("#txtPorcentaje").keypress(function (e) {
if (!validarPorcentaje($(this), e)) return false;
});
});
function validarPorcentaje(sender, e) {
var keyCode = e.keyCode ? e.keyCode : e.which;
var text = sender.val();
if (!isValid(keyCode)) return false;
if (verif(text, keyCode)) return false;
if (keyCode == 46 && hasPoint(text)) return false;
if (hasPoint(text) && hasTwoDecimals(text)) return false;
return true;
}
function isValid(c) {
var patron = /[0-9]|[.]/;
var s = String.fromCharCode(c);
return patron.test(s);
}
function hasPoint(s) {
var i = s.indexOf(".");
return i != -1;
}
function hasTwoDecimals(s) {
var t = s.split(".");
return t[1].length == 2;
}
function verif(s, k) {
var r = s + String.fromCharCode(k);
var n = parseInt(r, 10);
return n > 100 || (n == 100 && k == 46);
}
</script>
Si pudieran indicarme cuál es el problema y cómo solucionarlo. Quiero aprovechar también en que me saquen de una duda. Estaba convencido que e.KeyCode no era soportado por IE y que en su lugar había que utilizar e.which, sin embargo, me doy cuenta que no es así, ya que sí lo soporta, por el contrario me doy con la sorpresa que Mozilla Firefox es quien no lo soporta.
Muy agradecido por alguna respuesta.
Saludos cordiales.