I have an element with an onclick method.
I would like to activate that method (or: fake a click on this element) within another function.
Is this possible?
-
Once you have selected an element you can call click()
document.getElementById('link').click();
see: https://developer.mozilla.org/En/DOM/Element.click
I don't remember if this works on IE, but it should. I don't have a windows machine nearby.
-
If you're using JQuery you can do:
$('#elementid').click();
-
I haven't used jQuery, but IIRC, the first method mentioned doesn't trigger the
onclick
handler.I'd call the associated
onclick
method directly, if you're not using the event details. -
just call "onclick"!
here's an example html:
<div id="c" onclick="alert('hello')">Click me!</div> <div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div>
Vilx- : Unfortunately this will not fill the event object...hasen j : he didn't mention that he wants to fill an "event" object .. just that he wants to call the method. Plus I'm not sure what evernt object are you talking about! -
For IE there is fireEvent() method. Don't know if that works for other browsers.
-
@Vilx-
Firefox uses
element.dispatchEvent
.The page includes a sample
simulateClick()
. -
This is a perfect example of where you should use a javascript library like Prototype or JQuery to abstract away the cross-browser differences.
-
I could be misinterpreting your question, but, yes, this is possible. The way that I would go about doing it is this:
var oElement = document.getElementById('elementId'); // get a reference to your element oElement.onclick = clickHandler; // assign its click function a function reference function clickHandler() { // this function will be called whenever the element is clicked // and can also be called from the context of other functions }
Now, whenever this element is clicked, the code in
clickHandler
will execute. Similarly, you can execute the same code by calling the function from within the context of other functions (or even assignclickHandler
to handle events triggered by other elements)> -
You can also try getting the element's onclick attribute and then passing into eval. This should work despite the big taboo over eval. I put a sample below
eval(document.getElementById('elementId').getAttribute('onclick'));
0 comments:
Post a Comment