Saturday, May 11, 2024
 Popular · Latest · Hot · Upcoming
19
rated 0 times [  22] [ 3]  / answers: 1 / hits: 20538  / 13 Years ago, wed, november 16, 2011, 12:00:00

Is there a method for me to call a function after click on the reset button in form, and I mean after, so that the form is first reset and then my function called. Normal event bubbling would call my function and only then reset the form. Now I would like to avoid setTimeout in order to do this.



What I need is to call a function when a form is reset because I use uniform and uniform needs to be updated when values change.



At the moment I do it like this:



//Reset inputs in a form when reset button is hit  
$(button[type='reset']).live('click', function(){
elem = this;
//Sadly we need to use setTimeout to execute this after the reset has taken place
setTimeout(function(){
$.each($(elem).parents('form').find(:input), function(){
$.uniform.update($(this));
});
}, 50);
});


I tried to do al this on $(':input').change() but reseting an element does not seem to trigger the change event.

Thank you in advance for any help.


More From » jquery

 Answers
35

HTML forms do have an onReset event, you can add your call inside there:



function updateForm()
{
$.each($('form').find(:input), function(){
$.uniform.update($(this));
});
}

<form onReset=updateForm();>


As pointed out in the comment by Frédéric Hamidi you can also use bind like so:



$('form').bind('reset', function() {
$.each($(this).find(:input), function(){
$.uniform.update($(this));
});
});


After some testing it appears both ways fire before the reset takes place and not after. The way your doing it now appears to be the best way.



The same conclusion was found in this question here


[#89083] Tuesday, November 15, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jailynbethanies

Total Points: 686
Total Questions: 119
Total Answers: 99

Location: Cook Islands
Member since Thu, May 21, 2020
4 Years ago
;