I am really new to javascript, and stumbled upon the return
keyword. Basically, what is the difference in terms of these 2 statements?
<input type="checkbox" onclick="doAlert()" />
vs
<input type="checkbox" onclick="return doAlert();" />
Essentially, both returned the same results and called the function, but is there more to it? Any help greatly appreciated :). Thanks!
adding
return
to a function(), it disables the default behaviour of the browser, it disables the job ofsubmit
. Means it will keep you on the same page if the function returns false and you can fill up the value into the field again.If you do not use
return
with the function() thensubmit
function will perform its job, it will redirect to the next specified page, without caring about the returned result whether it was true or false.Returning false from the function, will abort the effect of the checking. Because the native of functions that written hardcoded into html properties (it became some new local function), writing the html without the word "return" will just run the function, and lose its returning value, as if you've wrote:
Function
some_local_function
won't return any value, althoughdoAlert
returns.When you write "return", it's like you wrote the second function like this:
which preserves the returning value of doAlert, whatever it will be. If it's true - the action will perform (the checkbox will be checked) - otherwise - it will cancel.
You can see live expamle here: http://jsfiddle.net/RaBfM/1/
Some html elements have JS events that behave differently when true/false is returned. For instance:
...vs...
In the second instance, if the
ValidateForm
function returned false the form will not submit, in the first even if the function returns false the form will still submit.I think this scenario, you can see the different between using the
return
keyword and not.UPDATED To simplify, if you use the
return
keyword you are passing a value back to the function that called theonsubmit
. Without it, you are simply calling the function that you name in the event handler and returning nothing.