Cita:
Iniciado por af1 Hola. Les cuento el siguiente problema.
Estoy validando un campo input con javascript. El código:
function esDecimal(e){
var numero=window.event.srcElement.value;
if (!/^[$]*[0-9]*.[0-9]*$/.test(numero)){ //Verifico que sea decimal por medio de una expresión regular.
alert("El valor " + numero + " no es un número");
window.event.srcElement.focus(e);
}else{
guardarDatos(e); //envío datos por AJAX
}
}
La comprobación se hace bien. El problema que tengo quiero que se haga foco al elemento que produjo el evento. Probé con la línea "window.event.srcElement.focus(e);", pero no está funcionando.
Que opinan?
Saludos!
En primer lugar, tu expresión regular no es correcta (5x5 --> validaría)
En segundo si estás validadndo un input, no sé por que te complicás con
var numero=window.event.srcElement.value;
Te aconsejo esto:
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript"> //<![CDATA[
function esDecimal(){
var numero=document.getElementById('precio');
if((!validarNumero(numero.value))||(numero.value == "")){
numero.value="";
numero.style.backgroundColor = 'red';
numero.focus();
alert("El valor " + numero.value + " no es un número");
return false;
}else{
// aquí decidís que es lo que querés pasar
var valor = parseFloat(numero.value);
alert('Con redondeo: ' + parseFloat(valor).toFixed(2));
var a = Math.floor(valor * 100) / 100;
alert('Sin redondeo 2 decimales: ' + a.toFixed(2));
alert('Numero completo: ' + valor);
//guardarDatos(numero); //envío datos por AJAX
}
}
// funcón para validar enteros o flotantes
function validarNumero(input){
return (!isNaN(input)&&parseInt(input)==input)||(!isNaN(input)&&parseFloat(input)==input);
}
//]]>
<form action="#" onsubmit="return esDecimal()"> <input type="text" id="precio" name="precio" value="" /><br /><br /> <input type="submit" value="procesar" /><br /><br />
Saludos