Foros del Web » Programando para Internet » Javascript »

Problema con los FOCUS

Estas en el tema de Problema con los FOCUS en el foro de Javascript en Foros del Web. HOLA A TODOS espero que me puedan ayudar a resolver este problema les explico en mi pagina tengo que cuando llegas a la capacidad maxima ...
  #1 (permalink)  
Antiguo 15/09/2010, 21:38
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Problema con los FOCUS

HOLA A TODOS espero que me puedan ayudar a resolver este problema les explico

en mi pagina tengo que cuando llegas a la capacidad maxima de un campo te pase automáticamente al otro campo pero el problema es que con el valor que metas en el campo tengo la opcion de ocultar algunos campos y hay surge mi problema cuando oculto el campo que le especifico que se pase no lo encuentra por que esta oculto.

me pegunto si puedo hacer una funcion que cuando el campo este oculto me mande automáticamente a uno que si este visible, no se si me puedan decir como le puedo dar solución a este problema

ejemplo:
tengo 10 renglones para capturar pero tengo un campo que le tienes que especificar cuantos renglones vas a ocupar de eso 10
entonces si nada mas van a ocupar 3 les oculto los otros 7 pero en el ultimo campo del renglon tengo que se salte al primer campo del otro renglon pues ahí tengo el problema por que ya no esta el 4to renglon
entonces quisiera que se saltara automáticamente a donde debería ser.

de antemano les doy las gracias y espero que alguien me pueda ayudar a resolver este problemita
suerte a todos
gracias
  #2 (permalink)  
Antiguo 15/09/2010, 21:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Problema con los FOCUS

Si nos muestras cuál es el código que utilizas para pasar de un campo a otro probablemente será más sencillo indicarte qué modificación debes realizar.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/09/2010, 10:36
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

claro perdon este en el codigo que tengo para todos mis campos

<input name="S03P0501" type="text" id="S03P0501" size="1" maxlength="1" onkeyup="if(this.value.length == this.getAttribute('maxlength') &amp;&amp; this.value.search(/1|2/, this.value)=='-1'){alert('Chav@ este ' + this.value + ' es un error'+ '\n' + 'revisa tus valores chat@'); this.value='';this.value.focus();}
if(this.value.length == this.getAttribute('maxlength') &amp;&amp; this.value.search(/1|2/, this.value)=='0'){S03P0601.focus();}" />

esto lo establezco a cada campo espero que si me puedan ayudar
de antemano muchas gracias
suerte en su día
  #4 (permalink)  
Antiguo 16/09/2010, 11:29
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Problema con los FOCUS

En lugar de eso, podrías recorrer todos los campos del formulario y a partir de allí pasar el foco a uno que esté visible. Este código puede servirte de guía:
http://www.forosdelweb.com/1268726-post231.html
Sólo tienes que adaptarlo para que el foco lo cambie al llegar a la longitud máxima y también que salte los que están ocultos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 16/09/2010, 17:07
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

ok lo que pasa es que soy novato pero a parecer el código que me pones de guia es para que cuando preciones enter te pase o algo así casi no entiendo mucho no se si me pudes explicar un poco mas
de antemano gracias por apoyarme
  #6 (permalink)  
Antiguo 18/09/2010, 13:08
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

hola a todos pero no se si alguien me pueda explicar la funcion o como le puedo hacerle parasolucionar este problema
de antemano gracias
suerte
  #7 (permalink)  
Antiguo 20/09/2010, 12:31
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

hola a todos no se si me puedan ayudar con este problema no se que hacer estoy parado por eso nadie me puede explicar como le puedo hacer para solucionar el problema

de antemano gracias y espero que tenga alguna respuesta
suerte
  #8 (permalink)  
Antiguo 20/09/2010, 20:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Problema con los FOCUS

Muestra lo que has intentado a partir de lo que te indiqué, y cuáles son tus dudas; así podremos ayudarte.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 21/09/2010, 13:20
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

ok la verdad no entiendo como pueda adaptar la función de guía se que aquí
if(tecla!=13) return; le pones que cuando teclees enter que te pase al otro campo
pero no tengo idea de como hacerle o ponerle para que en vez de apretar enter te pase
vaya lo que tu me comentas que la adapte para que cuando llegue a la longitud máxima se cambie de foco esa seria mi duda y pues si no se como le puedo poner pues no he avanzado en eso
estoy empezando en este ambiente la verdad no tengo algo basico por eso pongo que me expliquen
de antemano gracias y espero que me ayuden
gracias y suerte
  #10 (permalink)  
Antiguo 21/09/2010, 14:30
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Problema con los FOCUS

Hola

Es sencillo modificarla. Has de usar y pasarle a la función como parámetro la propiedad maxLength para saber el límite que tiene el campo, después solamente comparas ese valor con el número de caracteres insertados en el campo hasta ese momento (value.length). Cuando ambos valores sean iguales, ejecutas todo el código a partir del ciclo.
Nota.- Lo anterior al ciclo lo puedes eliminar

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 23/09/2010, 10:40
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

OK A VER SI ESTOY BIEN EN VES DE PONER IF(TECLA!=13) QUIERES QUE PONGA ESTO???

function tabular(e,obj) {
tecla=(document.all) ? e.keyCode : e.which;
if(MAXLENGTH=VALUE.LENGTH) return;
frm=obj.form;
for(i=0;i<frm.elements.length;i++)
if(frm.elements[i]==obj) {
if (i==frm.elements.length-1) i=-1;
break }
frm.elements[i+1].focus();
return false;

O LA VERDAD NO COMPRENDO TODAVIA BIEN
  #12 (permalink)  
Antiguo 23/09/2010, 12:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Problema con los FOCUS

Hola

Así
Cita:
function tabular(obj, tam) {
var frm=obj.form;
var largo = obj.value.length;
if (largo == tam) {
for(i=0;i<frm.elements.length;i++)
if(frm.elements[i]==obj) {
if (i==frm.elements.length-1) i=-1;
break }
frm.elements[i+1].focus();
return false;
}
}

<input type="text" maxlength="2" onkeypress="return tabular(this, this.maxLength)" />
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #13 (permalink)  
Antiguo 23/09/2010, 14:54
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

hola gracias por la ayuda pero me manda un error me dice que requiere un objeto
y no se por que no punciona
lo puse asi:

<head>
<script>
function tabular(obj, tam) {
var frm=obj.form;
var largo = obj.value.length;
if (largo == tam) {
for(i=0;i<frm.elements.length;i++)
if(frm.elements[i]==obj) {
if (i==frm.elements.length-1) i=-1;
break }
frm.elements[i+1].focus();
return false;
}
}
</script>



<input name="CVE_ENT" type="text" id="CVE_ENT" size="2" maxlength="2" onkeypress="return tabular(this, this.maxLength)" />
<input name="CVE_MUN" type="text" id="CVE_MUN" size="3" maxlength="3" onkeypress="return tabular(this, this.maxLength)" />


no se que paso o a que se deba el error bueno gracias y espero que me puedan ayudar
  #14 (permalink)  
Antiguo 23/09/2010, 15:47
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Problema con los FOCUS

Hola

Que navegador estás usando, lo que probado en ie8, ff, opera, chrome y no levanta error. Lo que sí vamos a hacer es añadirle el par de lineas que te comenté que no eran necesarias, pero con una pequeña modificación
Cita:
function tabular(evt, obj, tam) {
tecla=(document.all) ? evt.keyCode : evt.which;
if(tecla==8) return;
// para la tecla de retroceso
var frm=obj.form;
var largo = obj.value.length;
if (largo == tam) {
for(i=0;i<frm.elements.length;i++)
if(frm.elements[i]==obj) {
if (i==frm.elements.length-1) i=-1;
break }
frm.elements[i+1].focus();
return false;
}
}

<input name="CVE_ENT" type="text" id="CVE_ENT" size="2" maxlength="2" onkeypress="return tabular(event, this, this.maxLength)" />
<input name="CVE_MUN" type="text" id="CVE_MUN" size="3" maxlength="3" onkeypress="return tabular(event, this, this.maxLength)" />
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #15 (permalink)  
Antiguo 23/09/2010, 16:21
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

me sigue mandando el mismo error pero cambie

esto:
if(tecla==8) return; // para la tecla de retroceso

puse esto:
if(tecla!=8) return; // para la tecla de retroceso

y ya no me manda ningún error pero tengo que apretar tab para cambiarme al otro campo

y lo que yo necesito hacer es que cuando llene el campo me pase automáticamente
espero que me haya explicado bien
gracias por el apoyo
  #16 (permalink)  
Antiguo 23/09/2010, 16:27
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Problema con los FOCUS

Hola
Cita:
Iniciado por mexbale Ver Mensaje
me sigue mandando el mismo error pero cambie

esto:
if(tecla==8) return; // para la tecla de retroceso

puse esto:
if(tecla!=8) return; // para la tecla de retroceso

y ya no me manda ningún error pero tengo que apretar tab para cambiarme al otro campo

y lo que yo necesito hacer es que cuando llene el campo me pase automáticamente
espero que me haya explicado bien
gracias por el apoyo
Te has explicado bien, y el código es correcto. Ya te comenté que lo he probado en distintos navegadores. ¿Donde lo estás probando?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #17 (permalink)  
Antiguo 23/09/2010, 16:42
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

lo estoy probando en IE8 y chrome pero en ninguno funciona
te pongo todo mi código:
<!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">
<head>
<script>
function tabular(evt, obj, tam) {
tecla=(document.all) ? evt.keyCode : evt.which;
if(tecla==8) return; // para la tecla de retroceso
var frm=obj.form;
var largo = obj.value.length;
if (largo == tam) {
for(i=0;i<frm.elements.length;i++)
if(frm.elements[i]==obj) {
if (i==frm.elements.length-1) i=-1;
break }
frm.elements[i+1].focus();
return false;
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<table width="950" align="center">
<tr>
<td colspan="2" style="border-bottom:1px dashed #A60C00"><strong>1. IDENTIFICACION GEOGRAFICA</strong></td>
</tr>
<tr>
<td style="border-bottom:1px dashed #A60C00"><div align="right">ENTIDAD FEDERATIVA</div></td>
<td style="border-bottom:1px dashed #A60C00"><div align="right">
<input name="CVE_ENT" type="text" id="CVE_ENT" size="2" maxlength="2" onkeypress="return tabular(event, this, this.maxLength)" />
</div></td>
</tr>
<tr>
<td style="border-bottom:1px dashed #A60C00"><div align="right">MUNICIPIO O DELEGACION</div></td>
<td style="border-bottom:1px dashed #A60C00"><div align="right">
<input name="CVE_MUN" type="text" id="CVE_MUN" size="3" maxlength="3" onkeypress="return tabular(event, this, this.maxLength)" />
</div></td>
</tr>
<tr>
<td style="border-bottom:1px dashed #A60C00"><div align="right">LOCALIDAD</div></td>
<td style="border-bottom:1px dashed #A60C00"><div align="right">
<input name="CVE_LOC" type="text" id="CVE_LOC" size="4" maxlength="4" onkeypress="return tabular(event, this, this.maxLength)" />
</div></td>
</tr>
<tr>
<td style="border-bottom:1px dashed #A60C00"><div align="right">CLAVE DE AGEB</div></td>
<td style="border-bottom:1px dashed #A60C00"><div align="right">
<input name="CVE_AGEB" type="text" id="CVE_AGEB" size="4" maxlength="4" onkeypress="return tabular(event, this, this.maxLength)" />
</div></td>
</tr>
<tr>
<td style="border-bottom:1px dashed #A60C00"><div align="right">MANZANA</div></td>
<td style="border-bottom:1px dashed #A60C00"><div align="right">
<input name="MZA" type="text" id="MZA" size="3" maxlength="3" onkeypress="return tabular(event, this, this.maxLength)" />
</div></td>
</tr>
</table>
</body>
</html>


al parecer todo el codigo esta bien pero no se si le puedes echar un vistazo, por que como te comento a mi no me funciona
de antemano te doy las gracias
  #18 (permalink)  
Antiguo 23/09/2010, 18:05
Avatar de deirdre  
Fecha de Ingreso: mayo-2009
Mensajes: 690
Antigüedad: 15 años, 6 meses
Puntos: 45
Respuesta: Problema con los FOCUS

Hola mexbale

Lo único que te falta es crear el form:

Aquí lo puedes ver (testado en ie8, chrome5 y opera10)

Código HTML:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tabulación automática</title>

<script type="text/javascript">
	function tabular(evt, obj, tam) {
		tecla=(document.all) ? evt.keyCode : evt.which;
	if(tecla==8) return; // para la tecla de retroceso
	var frm=obj.form;
	var largo = obj.value.length;
	if (largo == tam) {
	for(i=0;i<frm.elements.length;i++)
	if(frm.elements[i]==obj) {
	if (i==frm.elements.length-1) i=-1;
	break }
		frm.elements[i+1].focus();
	return false;
	}
}
</script>
</head>

<body>
<form id="frm">
	<table width="950" align="center">
		<tr>
			<td colspan="2" style="border-bottom:1px dashed #A60C00"><strong>1. IDENTIFICACION GEOGRAFICA</strong></td>
		</tr>
		<tr>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">ENTIDAD FEDERATIVA</div></td>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">
			<input name="CVE_ENT" type="text" id="CVE_ENT" size="2" maxlength="2" onkeypress="return tabular(event, this, this.maxLength)" /></div>
			</td>
		</tr>
		<tr>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">MUNICIPIO O DELEGACION</div></td>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">
			<input name="CVE_MUN" type="text" id="CVE_MUN" size="3" maxlength="3" onkeypress="return tabular(event, this, this.maxLength)" /></div>
			</td>
		</tr>
		<tr>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">LOCALIDAD</div></td>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">
			<input name="CVE_LOC" type="text" id="CVE_LOC" size="4" maxlength="4" onkeypress="return tabular(event, this, this.maxLength)" /></div>
			</td>
		</tr>
		<tr>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">CLAVE DE AGEB</div></td>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">
			<input name="CVE_AGEB" type="text" id="CVE_AGEB" size="4" maxlength="4" onkeypress="return tabular(event, this, this.maxLength)" /></div>
			</td>
		</tr>
		<tr>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">MANZANA</div></td>
			<td style="border-bottom:1px dashed #A60C00"><div align="right">
			<input name="MZA" type="text" id="MZA" size="3" maxlength="3" onkeypress="return tabular(event, this, this.maxLength)" /></div>
		</td>
	</tr>
</table>
</form>
</body>
</html> 
Saludos
  #19 (permalink)  
Antiguo 23/09/2010, 21:53
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

gracias por la ayuda ya funciona de lujo
muchas gracias a todos los que me ayudaron a resolver este problema se les agradese mucho suerte en todo lo que hagan
saludos
  #20 (permalink)  
Antiguo 24/09/2010, 09:55
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

Hola a todos me surgio una duda bueno mas que una duda es algo que acabo de ver.

La funciÓn esta bien si jala bien pero lo que estoy viendo es que si se oculta un campo no sabe a donde irse y me marca un error:

No se puede mover el foco hacia el control porque el controles invisible, no esta habilitado o es de un tipo que no acepta al foco

y el problema que tenia al principio era que oculto filas y al final de la fila no sabe a cual foco irse por que le especifico uno que no esta habilitado y al parecer sigo igual

LAS FUNCIONES QUE TENGO PARA OCULTAR Y HABILITAR SON LAS SIGUIENTES:

<script language="JavaScript" type="text/javascript">
function activaEstado(iden) //funcion para activar los campos
{
var elhtml2 = document.getElementById(iden);
var elhtml = iden;
if(elhtml2.style.display == 'none'){
elhtml2.style.display = 'block';}
else {elhtml2.style.display = 'block';}
}
</script>
<script language="JavaScript" type="text/javascript">
function desactivaEstado(iden) //funcion para desactivar los campos
{
var elhtml2 = document.getElementById(iden);
var elhtml = iden;

elhtml2.style.display = 'none';
elhtml2.value="";
}
</script>


por favor les pido su ayuda para resolver esto
de antemano les doy las gracias
suerte
  #21 (permalink)  
Antiguo 24/09/2010, 16:44
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

hola alguien me podria ayudar con esta dudita
de antemano gracias
  #22 (permalink)  
Antiguo 27/09/2010, 13:17
Avatar de mexbale  
Fecha de Ingreso: septiembre-2010
Ubicación: Iztapalapa
Mensajes: 146
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con los FOCUS

hola a todos otra vez molestándolos lo que pasa es que no se por que la función que modificamos no me salta los campos que oculto eso es el problema que sigo teniendo espero que alguien sepa como puedo corregir este problema
de antemano les doy las gracias y disculpen por las molestias

Etiquetas: focus
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 13:56.