2009-06-11 13 views
18

Tengo una página con una etiqueta de anclaje. En mi JavaScript estoy estableciendo el atributo HREF de la etiqueta de anclaje de forma dinámica en función de algunas condiciones if-else. Ahora quiero invocar el evento click de la etiqueta ancla programáticamente. Usé el siguiente código, pero no fue exitoso.JavaScript: invocación de click-event de una etiqueta de ancla de javascript

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650"; 

document.getElementById("proxyAnchor").href=proxyImgSrc; 
document.getElementById("proxyAnchor").onclick; 

¿Alguien me puede decir cómo proceder? Tengo una implementación de caja de luz jQuery (caja gruesa) en este enlace.

Amablemente asesorar. Gracias por adelantado.

+0

¿Puedo establecer la ruta donde se debe descargar el archivo? porque usar esto solo descarga a la carpeta DESCARGAS. Quiero guardar en la ubicación del archivo html. –

Respuesta

63

Si tiene jQuery instalado entonces por qué no acaba de hacer esto:

$('#proxyAnchor')[0].click(); 

en cuenta que utilizamos [0] para especificar el primer elemento. El selector de jQuery devuelve una instancia de jQuery, y al llamar a click() solo llama al manejador de javascript, no al href. Llamando clic() en el elemento real (devuelto por [0]) seguirá el enlace en un href etc.

Vea aquí un ejemplo para ilustrar la diferencia: http://jsfiddle.net/8hyU9/

cuanto a por qué el código original es no funciona - es probable que sea porque está llamando al onclick, y no a onclick(). Sin el paréntesis JavaScript devolverá lo que esté asignado a la propiedad onclick, no intente ejecutarlo.

Prueba el siguiente ejemplo para ver lo que quiero decir:

var f = function() { return "Hello"; };  
alert(f); 
alert(f()); 

El primero se mostrará el texto real de la función, mientras que el segundo se mostrará la palabra "Hola" como se esperaba.

+1

¿Por qué el voto a favor? – samjudson

+1

Gracias Samjudson.IT funcionó – Shyju

+2

Para el caso de uso de "seguir el href definido en el anclaje" [esta respuesta falla] (http: // jsfiddle.net/SNdHW/show /) –

1

Creo que desea invocar el evento click. No es el "onClick". Además, asegúrese de incluir el paréntesis() cuando invoque un método. No confunda los métodos (que terminan con (y)) con atributos y propiedades que no terminan con (y).

// Using jQuery - Which you tagged... 
$("#proxyAnchor").attr("href", proxyImgSrc).click(); 
+0

Sí.Haga clic en el evento – Shyju

11

Debe llamar clic evento como este:

document.getElementById("proxyAnchor").click(); 
// $('#proxyAnchor').click(); 

pero en su caso se debe establecer la ubicación de la ventana a una página de redirección, si quieres que.

+0

¿Puedo establecer la ruta donde se debe descargar el archivo? porque usar esto solo descarga a la carpeta DESCARGAS. Quiero guardar en la ubicación del archivo html. –

1

Creo que esto es lo que está buscando:

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650"; 
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");; 
Cuestiones relacionadas