Foros del Web » Programación para mayores de 30 ;) » .NET »

Ejecutar función JS... pero después

Estas en el tema de Ejecutar función JS... pero después en el foro de .NET en Foros del Web. Hola a tod@s! Necesito ejectutar una función javascript tras pulsar un botón, pero me vendría bien que antes ejecutase algunas instrucciones. Sé que con esto: ...
  #1 (permalink)  
Antiguo 31/05/2004, 06:34
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
Pregunta Ejecutar función JS... pero después

Hola a tod@s!
Necesito ejectutar una función javascript tras pulsar un botón, pero me vendría bien que antes ejecutase algunas instrucciones.
Sé que con esto:
Código:
Button1.Add("onClick", "javascript: alert('prueba!')")
asocias el javascript al evento onclick, pero al pulsar el botón primero ejecuta el javascript y después el código que tenga en Private Sub Button1_Click... Cómo podría ejecutar eso antes que el javascript? es decir, necesitaría llamar al javascript por código VB cuando yo quiera o al menos después de esas lineas.

Después de esto dejo el JS... de verdad

Saludos.
  #2 (permalink)  
Antiguo 31/05/2004, 06:59
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 4 meses
Puntos: 8
Pon el codigo tras la declaración,es decir:
Aqui mi ejemplo con una imagen
Cita:
Private Sub ImgRegistrarse_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImgRegistrarse.Click
'AQUI EL CODIGO QUE QUIERAS QUE SE EJECUTE ANTES DEL JAVASCRIPT
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''
'Y AHORA EL CODIGO DEL JAVASCRIPT TAL COMO TE LO PONGO A CONTINUACION
Response.Write("<script language=""JavaScript"">")
Response.Write("parent.frames[""principal""].location.href=""registro.aspx"";") 'ESTO LO CAMBIAS POR TU CODIGO
Response.Write("</script>")
End Sub
Saludos
  #3 (permalink)  
Antiguo 31/05/2004, 07:21
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
Algo me falla Sundark y eso que sólo he puesto esto para probar:

Código:
Private Sub btn1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn1.Click
        Response.Write("<script language=""JavaScript"">")
        Response.Write("alert(""PRUEBA!"")")
        Response.Write("</script>")
End Sub
Pero el alert no sale y además el I Explorer da un error de "Puntero no válido" ?¿

Alguna idea?
  #4 (permalink)  
Antiguo 31/05/2004, 07:39
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
El problema del puntero no válido se ha solucionado al quitar el SmartNavigation="True", no entiendo muy bien porque pero bueno.
Aun así sigo sin que funcione, ahora el I Explorer da un error de "Se esperaba un objeto", es como si la función JS no estuviese definida. Estoy haciendo las pruebas con esto, a ver si alguien encuentra que puede fallar:

Código:
<HEAD>
...
<script language="JavaScript">
function Prueba() {
  alert('Prueba')
}
</script>
...
</HEAD>
Y en la parte de código VB, simplemento esto:
Código:
Private Sub btn1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn1.Click
        Response.Write("<script language=""JavaScript"">")
        Response.Write("Prueba()")
        Response.Write("</script>")
End Sub

Alguien ve lo que estoy haciendo mal?

Un Saludo.
  #5 (permalink)  
Antiguo 31/05/2004, 08:05
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 4 meses
Puntos: 8
¿Estas usando webmatrix?
  #6 (permalink)  
Antiguo 31/05/2004, 08:10
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
No no, es una aplicación web "normal" en VB.
Uso frames, el problema puede estar por ahí?
  #7 (permalink)  
Antiguo 31/05/2004, 11:21
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Hola!
Prueba de la forma que pusiste al principio Scho:

Button1.Attributes.Add("OnClick", "javascript...")

Por curiosidad, qué quieres que haga exactamente el botón??
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #8 (permalink)  
Antiguo 31/05/2004, 11:52
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
Te cuento GeRuNdIo, eso ya sé que funciona, lo que pasa es que necesito que ejecute una cosa antes, me explico: Necesito imprimir una especie de informe y entre otras cosas tiene un textbox "grande" donde el usuario puede escribir unas observaciones del informe; pues bien, como ya he desistido de usar Crystal lo intento imprimir con JS, como sólo necesito que imprima una parte uso un DIV oculto y ahí copio lo que necesito imprimir... no sé si me explico, bueno, la cosa es que la función javascript simplemente tiene esto:

Código:
function imprimirInforme() {
  document.getElementById("informeImpresion").innerHTML = getElementById("informe").innerHTML;
print();
}
Y ahora viene el problema, así sin hacer nada más lo imprime bien lo que pasa es que sale el textbox (con los bordes y el scrollbar) y queda fatal, así que he metido un label (oculto por css pero sólo en pantalla, no en impresión) e intento copiar el contenido del textbox en el label para que al imprimir eso sólo se vea el texto y no el textbox con el borde y el scrollbar (Por cierto que el textbox está oculto por css en impresión pero no al verlo por pantalla)
Así que tengo esto:

Código:
Private Sub btnEmitirInforme_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEmitirInforme.Click
        Labelinforme.Text = txtInfomorme.Text
        ' Aquí se llamaría al JS imprimirInforme()
End Sub
Por eso no me funciona lo que dices, porque manda a imprimir antes de pasarle el contenido del textbox al label y eso queda vacío.

A qué me estoy rayando y hay otra forma más fácil?! pero es lo único que se me ha ocurrido hasta ahora y además no queda mal una vez consiga hacer eso (si es que se puede)

Saludos.
  #9 (permalink)  
Antiguo 31/05/2004, 12:09
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Porque no ejecutas entonces todo desde javascript:

ejemplo:

Cita:
function imprimirInforme() {
var lbl = document.getElementById("Labelinforme")
var txt = document.getElementById("txtInfomorme")
lbl.innerText = txt.value
document.getElementById("informeImpresion").innerH TML = getElementById("informe").innerHTML;
print();
}
Y pones un boton del lado del cliente..(si es que no vas a ejecutar código de servidor)

Cita:
<INPUT type="button" value="Button" onclick="imprimirInforme();">
Saludos y espero te funcione. . .
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #10 (permalink)  
Antiguo 31/05/2004, 12:27
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
... ... ... mira RootK... no sé si aplaudirte o cortarme las venas a mí mismo por retrasado, pero de verdad, no se me había ocurrido. Funciona perfecto y además es sencillo pero estaba tan encabezonado en pasar el contenido del textbox al label por VB que no se ve había ocurrido hacerlo directamente en JS

En fin, no sé que haría sin vosotros....

Muchas gracias a tod@s!! Saludos
  #11 (permalink)  
Antiguo 31/05/2004, 12:32
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Enhorabuena Scho, me alegro que te haya salido!!!
(En verdad a mi casi ni me des las gracias........el mérito es de RootK, ole suswebos!! )
Saludoss!!!
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #12 (permalink)  
Antiguo 31/05/2004, 12:37
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
De acuerdo

Ehh gracias a ti también GeRuNdIo y a SunDarK también, si todos en este foro me estáis ayudando un web'o y no sólo con lo que me respondéis directamente sino con las respuesta que les dejáis a los demás y que después el resto podemos utilizar. En serio, muchas gracias
  #13 (permalink)  
Antiguo 31/05/2004, 13:05
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 4 meses
Puntos: 8
Jejejeje aqui estamos para eso,yo al menos cuando respondo lo hago muy contento de poder ayudar igual que me pongo contento cuando me ayudais ^_^,a ver si ponemos este foro en lo mas alto,que ultimamente ya se ve mas movimiento por aqui :D saludos
  #14 (permalink)  
Antiguo 31/05/2004, 13:15
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
a ver si ponemos este foro en lo mas alto,que ultimamente ya se ve mas movimiento por aqui
Aprovechando éste mimo post... quería saber si tambien pueden apoyar con las faq´s ya que todavía hay mucho por incluir.

Salu2 y me da gusto que por fin te haya salido Scho
  #15 (permalink)  
Antiguo 31/05/2004, 13:20
Avatar de SunDarK  
Fecha de Ingreso: diciembre-2003
Ubicación: Jerez de la Frontera
Mensajes: 1.193
Antigüedad: 20 años, 4 meses
Puntos: 8
Ya sabes mi respuesta a lo de la FAQ RootK ;)
  #16 (permalink)  
Antiguo 31/05/2004, 13:47
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
Anda!! Un nuevo problema con esto, al pasar el contenido del textbox al label o una capa DIV no se tienen en cuenta los saltos de linea, los transforma en espacios (el textbox es multilinea), hay algo que hacer con esto? tiene solución?

Ahh y por supuesto que se echará una mano en todo lo que se pueda en las FAQ, pero mis conocimiento en .NET aun no son demasiado sólidos y tampoco querría incluir nada que despues fuese una burrada jeje Pero para lo que sea aquí estoy yo, siempre que pueda y sepa echaré una mano
  #17 (permalink)  
Antiguo 31/05/2004, 15:28
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Puedes probar con ésto, solo que ahora en vez de usar innerText vas a usar innnerHTML para que los saltos de línea los sustituya por <br>

Cita:
<script language="javascript">
function imprimirInforme() {
var lbl = document.getElementById("Labelinforme")
var txt = document.getElementById("txtInfomorme")

var sText = txt.value;
sText = sText.split("\n").join("<br>"); //hago el replace
lbl.innerHTML = sText;
document.getElementById("informeImpresion").innerH TML = getElementById("informe").innerHTML;
print();
}
</script>
Saludos
  #18 (permalink)  
Antiguo 31/05/2004, 16:26
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Lo mismo digo respecto a la FAQ, la verdad es que ahora mismo ando super liado y no tengo apenas tiempo para postear.....
En cuanto pueda subire algo RootK de verdad.
Saludos
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
  #19 (permalink)  
Antiguo 31/05/2004, 16:48
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
En cuanto pueda subire algo RootK de verdad.
thx. . .
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #20 (permalink)  
Antiguo 01/06/2004, 04:33
 
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 367
Antigüedad: 20 años, 1 mes
Puntos: 1
Perfecto

Muchas gracias.
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 01:08.