Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   set focus (http://www.forosdelweb.com/f29/set-focus-311540/)

eaos 27/06/2005 14:49

set focus
 
hola, saludos a todos los del foro.

quería saber si es posible que al hacer un clic en uno de los items de un dropdownlist (asp.net), pueda poner el foco en un textbox?

además, hay alguna forma de que un imagebutton se "seleccione" al presionar la tecla enter.

gracias.

xknown 27/06/2005 15:15

Para lo primero puedes hacer lo siguiente (algo sencillo):
DropDownList1.Attributes.Add("onchange", "document.getElementById('TextBox1').focus()")

Si deseas poner el foco a otros TextBox, vas a tener que englobarlo dentro de una función, para mayor facilidad...

Para lo segundo coloca el siguiente script en el html de tu página (talvez tenga errores...)
Código:

<script type="text/javascript">
document.onkeypress = function (evt) {
        evt = evt ? evt : event;
        tecla = (document.all) ? evt.keyCode : evt.which;
                       
        if (tecla == 13) {
                document.getElementById("ImageButton1").click(); // ImageButton1 representa el ID del boton
        }
}
</script>


jmujica 28/06/2005 08:30

Para el setfocus, utilizo una funcion armada muy similar a la que se menciona antes y es la siguiente:

Public Sub SetFocus(ByVal ctControl As Control, ByRef pPage As Page)
Dim sbScript As New System.Text.StringBuilder
Dim ClientID As String = ctControl.ClientID

sbScript.Append("<script language='javascript'>")
sbScript.Append("window.scrollBy(0,400);")
sbScript.Append("document.getElementById('")
sbScript.Append(ClientID)
sbScript.Append("').focus();")
sbScript.Append("<" & "/script>")
pPage.RegisterStartupScript("Foco", sbScript.ToString())
End Sub

moNTeZIon 28/06/2005 08:38

Y para qué sirve la línea:
sbScript.Append("window.scrollBy(0,400);")
???

Y ésta?
pPage.RegisterStartupScript("Foco", sbScript.ToString())

Podrías explicar de qué forma funciona tu Sub y cómo llamarlo? Que hay que enviarle en el parametro pPage?

Jose_minglein2 28/06/2005 09:08

Según lo entiendo yo, la función está dentro de un modulo o clase y es referenciada desde cualquier página, por ejemplo

private sub dropdownlist1_SelectedIndexChanged(byval sender as object,byval e as eventargs) handles dropdownlist1.SelectedIndexChanged
Modulo.SetFocus(textbox1, me)
end sub

pPage.RegisterStartupScript("Foco", sbScript.ToString())

lo que hace es llamar a la función en el cliente desde el servidor, bien sea en un load o en un postback como el ejemplo que he puesto.

sbScript.Append("window.scrollBy(0,400);")

Es una función javascript para situar el scroll,

ya sé que no me has preguntado a mi, pero tengo un modulo para funciones javascript de ese tipo.

moNTeZIon 28/06/2005 09:12

Gracias Jose_minglein2.

Esto es un foro no? Puede responder quien lo sepa, a mi modo de verlo. Si alguien discrepa de lo que tu dices ya avisará, y si no, se lo quedará pa él ;-)

Pero sigo dudando de la línea del scroll... Eso es necesario para colocar el foco en un control?

jmujica 28/06/2005 09:35

Estoy totalmente de acuerdo con ambos en cuanto a sus respuestas, es un foro y cuanta mas gente responda, mas opiniones se tendrán.

En cuanto a la respuesta que dio Jose Minglein2 estoy de acuerdo, es mas, lo invoco de la misma manera. El scroll sinceramente no recuerdo porqué lo tengo puesto, pero si lo deseas quitaselo. Saludos.

Jose_minglein2 28/06/2005 09:56

Lo del scroll como te dije es para situar éste, porque creo que hay algunos navegadores que aunque un elemento tenga el foco no lo ves porque no está dentro del area del cliente inicialmente (aun despues de un postback) en 0,0 (p. ej. que esté abajo del todo), no se si me explico. Yo lo que haría sería indicar éste también como variable, p. ej.


Public Sub SetFocus(ByVal ctControl As Control, ByRef pPage As Page, byval pos as integer)
Dim sbScript As New System.Text.StringBuilder
Dim ClientID As String = ctControl.ClientID

sbScript.Append("<script language='javascript'>")
sbScript.Append("window.scrollBy(0," & pos &";")
sbScript.Append("document.getElementById('")
sbScript.Append(ClientID)
sbScript.Append("').focus();")
sbScript.Append("<" & "/script>")
pPage.RegisterStartupScript("Foco", sbScript.ToString())
End Sub

así puedes llamar a la función y colocar el scroll donde desees.

moNTeZIon 28/06/2005 10:04

OK. Ahora si.


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.