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.
|
|
#1 (permalink) |
![]() Fecha de Ingreso: febrero-2005
Mensajes: 26
|
set focus
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. |
|
|
|
|
|
#2 (permalink) |
![]() Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.249
|
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>
|
|
|
|
|
|
#3 (permalink) |
![]() Fecha de Ingreso: junio-2005
Mensajes: 20
|
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 |
|
|
|
|
|
#4 (permalink) |
![]() |
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?
__________________
..:: moNTeZIon ::.. |
|
|
|
|
|
#5 (permalink) |
![]() Fecha de Ingreso: noviembre-2004
Mensajes: 2.334
|
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. |
|
|
|
|
|
#6 (permalink) |
![]() |
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?
__________________
..:: moNTeZIon ::.. |
|
|
|
|
|
#7 (permalink) |
![]() Fecha de Ingreso: junio-2005
Mensajes: 20
|
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. |
|
|
|
|
|
#8 (permalink) |
![]() Fecha de Ingreso: noviembre-2004
Mensajes: 2.334
|
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. |
|
|
|