Hola a todos el siguiente script me sirve para ejecutar una base de datos ya que me funciona bien en todos los exploradores pero cuando lo ejecuto en mozilla falla el .focus ya que cuando el usuario me digita mal algun campo inmediatamente el .focus lo direcciona al siguiente campo y lo que quiero es que lo deje en el mismo campo hasta que la informacion sea la correcta....... agradezco mucho la colaboracion de alguno de ustedes ya que estoy matandome la cabeza y no he podido .........
$script = "
<script language=\"JavaScript\" type=\"text/javascript\">
today=new Date();
anno=today.getFullYear();
if(anno < 1000){
anno = anno + 1900;
}
alert(\"Año: \" +today.getFullYear());
var a, mes, dia, anyo, febrero, concurrencia,envio;
concurrencia = 0;
envio = 0;
function anyoBisiesto(anyo) {//funcion para el año bisiesto
if (anyo % 4 != 0)
return false;
else{
if (anyo % 100 == 0){// si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
if (anyo % 400 == 0){
return true;
}
else{ // si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
return false;
}
}
else{ // si es divisible por 4 y no es divisible por 100 > el año es bisiesto
return true;
}
}
}
function validar(fecha){
// obtenemos la fecha introducida y la separamos en dia, mes y año
a=fecha.value;
concurrencia = 1;
if(a == ''){
document.des.boton.focus();
return
}
anyo=a.split(\"-\")[0];
mes=a.split(\"-\")[1];
dia=a.split(\"-\")[2];
if( (isNaN(dia)==true) || (isNaN(mes)==true) || (isNaN(anyo)==true) ){
alert(\"La fecha introducida debe estar en el formato aaaa-mm-dd\");
fecha.focus();
fecha.select();
return;
}
if(anyoBisiesto(anyo))
febrero=29;
else
febrero=28;
if ((mes<1) || (mes>12)){ // si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
alert(\"El mes introducido no es válido. Por favor, introduzca un mes correcto\");
fecha.focus();
fecha.select();
return;
}
// si el mes introducido es febrero y el dia es mayor que el correspondiente al año introducido > alertamos y detenemos ejecucion
if ((mes==2) && ((dia<1) || (dia>febrero))){
alert(\"El día introducido no es válido. Por favor, introduzca un día correcto\");
fecha.focus();
fecha.select();
return;
}
// si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31))){
alert(\"El día introducido no es válido. Por favor, introduzca un día correcto\");
fecha.focus();
fecha.select();
return;
}
// si el mes introducido es de 30 dias y el dia introducido es mayor de 301 > alertamos y detenemos ejecucion
if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30))){
alert(\"El día introducido no es válido. Por favor, introduzca un día correcto\");
fecha.focus();
fecha.select();
return;
}
// si el mes año introducido es menor que 1900 o mayor que 2010 > alertamos y detenemos ejecucion
// NOTA: estos valores son a eleccion vuestra, y no constituyen por si solos fecha erronea
if ((anyo<2003) || (anyo>anno) )
{
alert(\"El año introducido no es válido. Por favor, introduzca un año entre 2003 y \"+ anno);
fecha.focus();
fecha.select();
setTimeout ('document.fecha.focus()',75);
return;
}
concurrencia = 0;
}
function validar_h(hora,flag){
if(concurrencia==0){
if(flag==1){
if(document.des.entrega.value == '')
return
}
// obtenemos la hora introducida y la separamos en horas, minutos
b=hora.value;
h=b.split(\":\")[0];
m=b.split(\":\")[1];
if(b == ''){
alert(\"La hora no puede ser vacia\");
hora.focus();
hora.select();
envio = 1;
return
}
if((isNaN(h)==true) || (isNaN(m)==true)){
alert(\"La hora introducida debe estar en el formato hh:mm\");
hora.focus();
hora.select();
envio = 1;
return;
}
if ( (h<7) || (h==7 && m<30) || (h==17 && m>30) || (h>17) ){ // si la hora introducida es negativa, 0 o mayor que 23 > alertamos y detenemos ejecucion
alert(\"La hora introducida no es válida. Por favor, introduzca una hora correcta entre 07:30 y 17:30\");
hora.focus();
hora.select();
envio = 1;
return;
}
if ((m<0) || (m>59)){ // si los minutos introducida es negativo, 0 o mayor que 59 > alertamos y detenemos ejecucion
alert(\"El minuto introducido no es válido. Por favor, introduzca un minuto correcto\");
hora.focus();
hora.select();
envio = 1;
return;
}
}
}
function pp(p){ // Función que coloca dos puntos a la hora
if(p.value.length==2)
p.value = p.value + \":\";
}
function pr(r,n){ // Función que colaca los separadores en la fecha
if(r.value.length==4 || r.value.length==7)
r.value = r.value + \"-\";
if(r.value.length==10){
if(n == 1){
document.des.guia.focus();
document.des.guia.select();
}
else{
document.des.hentrega.focus();
document.des.hentrega.select();
}
}
}
function enviar(){
if(envio==0)
document.des.submit();
}
//! Se valida con esta funcion la fecha de entrega para evitar
//! radicaciones esa informacion.
function val_fech_entr(){
if(document.des.entrega.value ==''){
document.des.radica_automatica.checked=false;
alert(\"No se puede realizar la radicacion, si no hay fecha de entrega.\");
}
}
</script>\n";