Foros del Web » Programando para Internet » Javascript »

javascript no funciona en mozilla por el focus

Estas en el tema de javascript no funciona en mozilla por el focus en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/01/2012, 14:25
 
Fecha de Ingreso: enero-2012
Mensajes: 7
Antigüedad: 12 años, 2 meses
Puntos: 0
Exclamación javascript no funciona en mozilla por el focus

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";
  #2 (permalink)  
Antiguo 18/01/2012, 10:32
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 18 años, 11 meses
Puntos: 37
Respuesta: javascript no funciona en mozilla por el focus

Deberías de poner tu código formateado, así es muy complicado de leer,

Lo que alcance a ver es que pj. en el campo hora haces hora.focus()

debe de ser:

document.tuforma.tucampo.focus();
o
document.getElementById("tuCampoId").focus();

Saludos.
__________________
Born to be free.
  #3 (permalink)  
Antiguo 18/01/2012, 15:49
 
Fecha de Ingreso: enero-2012
Mensajes: 7
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: javascript no funciona en mozilla por el focus

Hola goteen_mx el problema se me da cuando lo ejecuto en mozilla ya que al momento de ingresar un dato erroneo en el campo fecha el focus salta al otro campo

Código Javascript:
Ver original
  1. if ((mes<1) || (mes>12)){ // si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
  2. alert(\"El mes introducido no es válido. Por favor, introduzca un mes correcto\");
  3.                  
  4.            fecha.focus();
  5.             fecha.select();
  6.             return;"
y quiero que el focus se quede en el mismo campo hasta que se ingrese correctamente la fecha ..........
  #4 (permalink)  
Antiguo 18/01/2012, 17:37
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 18 años, 11 meses
Puntos: 37
Respuesta: javascript no funciona en mozilla por el focus

Tres preguntas:

1.- Ya hiciste lo que te comenté de como llamar a los elementos, por que por el código que pusiste no creo????
2.- Si todo es JS para que lo metes a una variable de PHP??
3.- No sería más facil utilizar un date picker??

Saludos.
__________________
Born to be free.
  #5 (permalink)  
Antiguo 19/01/2012, 05:39
 
Fecha de Ingreso: octubre-2003
Mensajes: 10
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: javascript no funciona en mozilla por el focus

Tienes la página subida para testear online?
  #6 (permalink)  
Antiguo 19/01/2012, 09:42
 
Fecha de Ingreso: enero-2012
Mensajes: 7
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: javascript no funciona en mozilla por el focus

Pues el codigo lo estoy manejando dentro de perl utilizando javascript, y al utilizar el date picker tendria que cambiar mi formato cosa que no quiero hacer ya que el objetivo es que cuando ejecute esta pagina en mozilla el focus este siempre en el campo ya sea fecha u hora para el usuario mi pregunta es ¿por que mozilla no reconoce el focus como lo hacen el resto de exploradores?
  #7 (permalink)  
Antiguo 19/01/2012, 18:18
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 18 años, 11 meses
Puntos: 37
Respuesta: javascript no funciona en mozilla por el focus

Mozilla SI reconoce la función focus, el problema como te repito creo es como estas seleccionando los objetos.
__________________
Born to be free.
  #8 (permalink)  
Antiguo 19/01/2012, 19:28
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 14 años, 11 meses
Puntos: 1485
Respuesta: javascript no funciona en mozilla por el focus

buenas,
hay un detalle importante que no has mencionado. ¿cómo invocas la función? o sea, ¿cuando haces la validación? en firefox, no es posible controlar el foco a un mismo elemento que inicia el evento blur. o sea, que si validas en el evento blur, no puedes obligar al usuario mantener el foco en ese campo. la verdad, suele ser muy quisquilloso mantenerse en un campo hasta cuando se le provea la información correcta -o cualquier otra condición. en firefox, creo que esta implementado como una medida de evitar molestar al usuario.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: focus, mozilla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:46.