Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2012, 11:44
Avatar de freesoftwarrior
freesoftwarrior
 
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Problema extraño con focus()

Buenas tardes:
Tengo este código

Cita:
<input type="text" id="num_documento" name="num_documento" size="20" maxlength="20" onKeyPress="return acceptNum3(event);" onChange="verificarFormatoDoc(this.value); modificaciones();" class="texto_amarillo" autocomplete="off">
La función acceptNum3 es sólo para que acepte números y guiones, nada más. La función modificaciones pone un valor en un campo hidden que esta al final del formulario (con o sin esta función el problema persiste).

Ahora, la función verificarFormatoDoc verifica que tenga el formato de 4 dígitos, guión y 8 dígitos en ese orden. Esta es la función

Cita:
function verificarFormatoDoc(numDoc)
{
var serie=Mid(numDoc,0,4);
var guion=Mid(numDoc,4,1)
var dato="";
var contador=0;
var msje="";
var numErrores=0;

for (var iCont = 0 ; iCont < numDoc.length ; iCont++)
{
dato=Mid(numDoc, iCont, 1);
if(dato=="-")
{contador=contador+1;}
}

if(guion != "-")
{
msje="El número de serie no es correcto. Debe tener 4 carácteres y luego un guión.\n"
numErrores=numErrores+1;
}

if(contador > 1)
{
msje=msje+"El número del documento no es correcto. Sólo debe haber un guíon y debe estar entre el número de serio y el número secuencial del documento.";
numErrores=numErrores+1
}

if(numErrores > 0)
{
if(numErrores == 1)
{
alert("Se ha detectado el siguiente error:\n"+msje);
document.registros.num_documento.value="";
document.getElementById("num_documento").focus();
}
else
{
alert("Se han detectado los siguientes erroes:\n"+msje);
document.registros.num_documento.value="";
document.getElementById("num_documento").focus();
}
}
}

Como ven al final de los alert hay un llamado a focus() para que, luego de borrar el dato ingresado, se mantenga el foco en ese campo, sin embargo no funciona. Siempre, luego de hacer clic en el botón ACEPTAR del alert, salta al siguiente campo. Eso si, borra el contenido del campo.

He probado con una llamada simple del tipo document.nombredelformulario.num_documento.focus() ; pero es lo mismo.

¿alguna idea?

Muchas gracias por el apoyo
Un saludo desde Lima, Perú