Foros del Web » Programando para Internet » ASPX (.net) »

Acceder a elementos de un iframe (de un masterpage) desde javascript

Estas en el tema de Acceder a elementos de un iframe (de un masterpage) desde javascript en el foro de ASPX (.net) en Foros del Web. Hola. Tengo un pequeño problemilla para acceder al contenido de los iframe desde Javascript : Antes accedía sin problemas poniendo por ejemplo: nombre=frames.nombre_iframe.document.getElementByI d('txtnombre_campo') Pero ...
  #1 (permalink)  
Antiguo 16/05/2006, 09:02
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Acceder a elementos de un iframe (de un masterpage) desde javascript

Hola.

Tengo un pequeño problemilla para acceder al contenido de los iframe desde Javascript:

Antes accedía sin problemas poniendo por ejemplo:

nombre=frames.nombre_iframe.document.getElementByI d('txtnombre_campo')

Pero ahora he realizado un pequeño cambio:

El iframe al que deseo acceder es ahora dependiente de una página principal (de extensión .master). Teniendo en cuenta que el ID del ContentPlaceHolder del masterpage es "Contenido", había probado poniendo:

nombre=frames.nombre_iframe.Contenido.document.get ElementById('txtnombre_campo')

también he probado:

nombre=frames.nombre_iframe.document.Contenido.get ElementById('txtnombre_campo')

pero no funciona.

Alguien tiene alguna idea de como puedo hacerlo?


Muchísimas gracias.
  #2 (permalink)  
Antiguo 16/05/2006, 10:50
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Wenas.

Siento revivir el post, pero me he dado cuenta que no accedo al iframe, sino que a donde en realidad tengo que acceder es al ContentPlaceHolder (llamado "contenido") del master (en el cual se carga un formulario aspx).

Imaginad:

Contenido de principal.master:

boton1 boton2 boton3 boton4

(lo que viene es el contentplaceholder, donde se cargar un el formulario aspx)

Nombre de la persona: [un textbox] (llamado txtnombre)


Si yo pulso el botón "boton1" quiero que me ejecute un evento de javascript que me diga lo que hay en txtnombre:

nombre=document.getElementById('txtnombre')
alert(nombre)

Pero no funciona.
También he intentado pasarlo el valor desde el lado del servidor (VB):

Me.btnprueba.Attributes.Add("onclick", "javascript:dime_nombre(me.btnprueba.text);")

No se supone que e tendría que pasar el nombre del boton "btnprueba" a la función de javascript "dime_nombre"???


Muchas gracias
  #3 (permalink)  
Antiguo 16/05/2006, 11:49
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Bueno lo he solucionado así:

desde VB llamo así:

Me.btnguardar.Attributes.Add("onclick", "javascript:return validar_campos_personas(" & "'" & txtnombre.Text & "'" & ");")

para poder cojer el valor en la función Javascript:

function validar_campos_personas(nombre)
{
alert(nombre)
}


Perdón por las molestias.

PD. De todas formas sigo sin saber como se podría hacer lo mismo pero sin pasar los nombres de los controles desde VB.
  #4 (permalink)  
Antiguo 17/05/2006, 01:34
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola aupaneu,
de todas formas, en javascript, para pasarle el propio control a la funcion se hace a través de this , no de Me. Tu linea de arriba deberia ser así:

Me.btnprueba.Attributes.Add("onclick", "javascript:dime_nombre(this.text);")

Y ahora no se si deberías sustituir text, por value... no recuerdo bien..

Saludos.
__________________
..:: moNTeZIon ::..
  #5 (permalink)  
Antiguo 17/05/2006, 02:54
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Para poder acceder al textbox desde el servidor he puesto lo siguiente:

Dim nombre As TextBox

nombre = CType(Me.contenido.FindControl("txtnombre"), TextBox)

Entonces como sería, así??

Me.btnprueba.Attributes.Add("onclick", "javascript:dime_nombre(this.nombre.text);")


Esto no me funciona. Ten en cuenta que al textbox donde quiero acceder está en un webform dependiente de una página principal (.master).

Gracias por la respuesta.
  #6 (permalink)  
Antiguo 17/05/2006, 03:17
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Si deseas acceder, desde JavaScript, al contenido de tu textbox "txtNombre" al presionar tu boton "btnPrueba", primeramente debes averiguar cómo se llama finalmente ese control textbox, una vez renderizada la página en el cliente. Los controles, a causa de estar ubicados en controles de usuario o paginas maestras, los nombres de éstos se ven afectados, para no darse la coincidencia de tener el mismo nombre para dos controles en dos UserControls distintos.
Entonces, una vez sepas los nombres reales, como bien hacías:

Me.btnPrueba.Attributes.Add("onClick", "javascript:dame_valor();")

Tu funcion dame_valor:
Código:
function dame_valor() {
  alert(document.getElementById("NombreDelTextBoxEnCliente").value);
}
Creo que seria algo así...
Espero haberte aclarado algo
Saludos.
__________________
..:: moNTeZIon ::..
  #7 (permalink)  
Antiguo 17/05/2006, 05:51
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Efectivamente !!!!!

Pues lo que he hecho es poner un boton nuevo que al hacer click me devolviera el "CLientID" del boton:

MsgBox(Me.nombre.ClientID)


Resulta que de llamarse txtnombre ahora no se le ocurre mejor cosa que llamarse: ctl00_contenido_txtnombre !!!

Muchas gracias MoNTeZion. En serio.
  #8 (permalink)  
Antiguo 17/05/2006, 08:12
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Ahi lo llevas
__________________
..:: moNTeZIon ::..
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 17:23.