Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

simular tab al pulsar intro (javascript)

1,931 views
Skip to first unread message

Sergio Soriano

unread,
Jan 21, 2010, 7:40:01 AM1/21/10
to
muy buenas, el siguiente código me soluciona el problema de la siguiente forma:

function cambiaFoco(cajadestino)
{
/*Esta funcion funciona con KeyPress y recibe como parametro el nombre de la
caja destino(que es una cadena)*/

//Primero debes obtener el valor ascii de la tecla presionada
var key=window.event.keyCode;

//Si es enter(13)
if(key==13)
//Se pasa el foco a la caja destino
document.getElementById(cajadestino).focus();
}

está perfecta y funciona OK en páginas normales.

Mi problema es que lo tengo en un control de usuario web.
y cajadestino me da null.

PREGUNTA::::
No sé como hacer referencia a los controles de texto que tengo en el
usercontrol. Alguien puede ayudar????

Jose A. Fernandez

unread,
Jan 24, 2010, 8:59:19 AM1/24/10
to
Hola Sergio

Para hacer referencia un ID del lado del cliente (el ID que genera en
el HTML) los controles ASP.NET tiene la propiedad ClienteId (mas abajo
hay un enlace a la ayuda)
Es decir con esta propiedad puedes conocer la "telaraña" de
concatenacion que llega para armar el ID :)
Es decir para escribir esto podrias en el codigo hacer algo asi
tuTextboxA.Attributes.Add("onkeydown", String.Format("cambiaFoco
({0});", tuTextboxDestino.ClientId))

MIra como tenemos qeu armar la parte de escribir la llamada a la
funcion js "cambiaFoco" concatenando...
Y lo debemos hacer por n

AHORA BIEN.. si no tienes referencia del control porque esta dentro
deun UC (User Control) alli tienes dos alternativas
OPCION 1: Publicar como Propiedad el control dentro del UC
Aqui tendrás den el UC una propiedad que sea
TextboxDestinoCLientId que obtenga el identificador entonces cuando
concatenas preguntas por esta propiedad del UC
Lo coloco como propiedad porque tener el TExtbox completo hacia
afuera... mmm no me gusta en POO (Programacion Orientada a Objetos)
(me gusta esta opcion)

OPCION 2: Que el UC escriba en javascript variables con los
identificadores de cada control
Esto tendrías que escribir en la pagina:
var textboxDestino = '<%=tuTextboxDestino.ClientId%>';
Entonces en js en esa pagina puedes hacer referencia (siempre en
js) a la variable textboxDestino


Algo mas general
La idea general esta no? Pero como hacer algo mas general?
Otro ejemplo:
---------------------------------
<html>
<head>
<title>Move with Enter OnKeyDown</title>
<script language="JavaScript" type="text/javascript">
<!--
function keyDown(e) {
var name = "";
if (document.all) {
if (e.keyCode == 13) name = e.srcElement.name;
} else
if (e.which == 13) name = e.target.name;

if ((name.length > 0) && (name.length < 6))
document.forms.f[name + "1"].focus();
}
// -->
</script>
</head>
<body>
<form name="f">
<input name="e1" type="text" onkeydown="javascript:keyDown
(event);">
<input name="e11" type="text" onkeydown="javascript:keyDown
(event);">
<input name="e111" type="text" onkeydown="javascript:keyDown
(event);">
<input name="e1111" type="text" onkeydown="javascript:keyDown
(event);">
<input name="e11111" type="text" onkeydown="javascript:keyDown
(event);">
<input type="button" value="Submit"
onclick="javascript:document.forms.f.submit();">
</form>
</body>
</html>

Mira como "se juega" con la posicion "del control dentro del
formulario"

Enlaces:
--------------------
Control.ClientID (Propiedad)
Obtiene el identificador del control de servidor generado por ASP.NET.
http://msdn.microsoft.com/es-es/library/system.web.ui.control.clientid(VS.80).aspx

Espero que te sirva de ayuda o guia
______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja


On 21 ene, 09:40, Sergio Soriano

0 new messages