Register  |  Login




Advertisement

Start Your Own Q&A Site

Create your own Q&A site easily, allowing you to quickly grow a new community around any subject matter or generate new organic traffic for your existing website.

Question

Status: Closed Points: 125 Time: 23:49 - Jan 06, 2009  

jgivoni

How do I trigger an event which was set up with dojo.connect?

The situation is that I have an html form with a file input field.

I want the form to be submitted asynchronously with dojo, so I connect the dojo ajax call to the onsubmit event of the form element:

dojo.connect(form_elem, 'onsubmit', function(event){dojo.xhrPost({form: form_elem});});

This (though example shown here is incomplete) works when you click the submit button - the file is submitted in the background.

Next thing is, I want to automatically submit the form when the user has selected a file, so I connect the onchange event of the file input element to the onsubmit event of the form:

dojo.connect(input_elem, 'onchange', function(event){input_elem.parentNode.onsubmit()});
(the parentNode is naturally the form element)

This doesn't work! The form element does not have an onsubmit function, even though it has the onsubmit event handler connected by dojo before.

Question is how do I trigger / fire the onsubmit event of the form?

Thanks for your help,
Jakob

NB: I am using the Dojo Toolkit v1.2

Answer Discussion
Tutorials

 

jgivoni

Date:: Jan 13, 2009

Time:: 07:24

Ok, I learned something new:

The event handler and the onsubmit method are not the same.

What we need to do, instead of called the onsubmit or submit function is to fire an event using different syntaxes for Internet Explorer and Firefox.

Example:

submit_form = function(form)
{
if (document.createEvent) // Firefox etc.
 {
  event = document.createEvent("HTMLEvents");
  event.initEvent("submit", false, true);
  form.dispatchEvent(event);
 }
 else // IE
 {
  form.fireEvent("onsubmit");
 }
}

Note that I am dispatching the "submit" event, not "onsubmit". When submit is about to fire, the onsubmit handler is called first and therefore the scenario still works.

All this has surprisingly little (i.e. nothing) to do with Dojo. Nevertheless I suspect Dojo has a cross browser way to do this hasslefree. I just haven't found it yet.

Thanks for you patience,
Jakob

Question Answered

This question has been closed, and points have been rewarded to the following experts:


jgivoni: 125

You're welcome however to comment or give additional information or if you wish, you have the ability to write a Tutorial in the Tutorial Area.

Answer this Question

New User

Email:

Upon submission of this form, you will automatically be registered as a Quomon user and we will send your login information to this address

Registered User

Username:

Password:

Forgot Your Password?

No tutorials have been submitted yet. Want to be the first?

Answer this Question

New User

Email:

Upon submission of this form, you will automatically be registered as a Quomon user and we will send your login information to this address

Registered User

Username:

Password:

Forgot Your Password?

Ask a Question

Have a new question? Ask!

You have 100 characters to use



Top Experts

View More

Rank

Expert

Points

1.

nidhi

10354

2.

oracleofDelphi

6493

3.

rcastagna

5596

4.

LAGM

4848

5.

PeterNZ

3487

6.

gonzalo

2840

7.

Mason

2770

8.

jgivoni

2303

9.

xarcus

1820

10.

Anpanman

917

Become an Expert

Register today to share your knowledge with the community and be recognized and rewarded for your contributions.


Register Here




"Psst, Quomon is a great site. Pass it on."     Tell a Friend  |   Link To Us  |   Save to Delicious  |   Digg! Digg it



Language Options

English:

www.quomon.com

Español:

www.quomon.es