<!DOCTYPE html>
<html lang="en">
<head>
<title>Form Test</title>
<script type="text/javascript">
function checkForm(form) // Submit button clicked
{
//
// check form input values
//
form.myButton.disabled = true;
form.myButton.value = "Please wait...";
return true;
}
function resetForm(form) // Reset button clicked
{
form.myButton.disabled = false;
form.myButton.value = "Submit";
}
</script>
</head>
<body>
<form method="POST" onsubmit="return checkForm(this);">
<input type="submit" name="myButton" value="Submit">
<input type="button" value="Reset Button" onclick="resetForm(this.form);">
</form>
</body>
</html>
<form id="myForm" method="POST">
<input id="mySubmit" type="button" name="myButton" value="Submit">
<input id="myReset" type="button" value="Reset Button">
</form>
var form = document.getElementById("myForm");
var btnSubmit = document.getElementById("mySubmit");
btnSubmit.addEventListener('click', checkForm);
function checkForm() {
//
// check form input values
//
console.log('here');
form.myButton.disabled = true;
form.myButton.value = "Please wait...";
//form.submit(); //use this to submit the form
}
var btnReset = document.getElementById("myReset");
btnReset.addEventListener('click', resetForm);
function resetForm()
{
console.log('here 1');
form.myButton.disabled = false;
form.myButton.value = "Submit";
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Form Test</title>
<script type="text/javascript">
function checkForm(form) // Submit button clicked
{
//
// check form input values
//
form.myButton.disabled = true;
form.myButton.value = "Please wait...";
return true;
}
function resetForm(form) // Reset button clicked
{
form.myButton.disabled = false;
form.myButton.value = "Submit";
}
</script>
</head>
<body>
<!--<form method="POST" onsubmit="return checkForm(this);">-->
<form method="POST" name="myForm" onsubmit="return checkForm(this) && false;">
<input type="submit" id="theButton" name="myButton" value="Submit">
<input type="button" value="Reset Button" onclick="resetForm(this.form);">
</form>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Form Test</title>
<script type="text/javascript">
var form = document.getElementById("myForm");
var btnSubmit = document.getElementById("mySubmit");
btnSubmit.addEventListener('click', checkForm);
function checkForm() {
//
// check form input values
//
console.log('here');
form.myButton.disabled = true;
form.myButton.value = "Please wait...";
//form.submit(); //use this to submit the form
}
var btnReset = document.getElementById("myReset");
btnReset.addEventListener('click', resetForm);
function resetForm()
{
console.log('here 1');
form.myButton.disabled = false;
form.myButton.value = "Submit";
}
</script>
</head>
<body>
<form id="myForm" method="POST">
<input id="mySubmit" type="button" name="myButton" value="Submit">
<input id="myReset" type="button" value="Reset Button">
</form>
</body>
</html>
var btnSubmit = document.getElementById("mySubmit");
Then mySubmit needs to exist before this line runs. As this line appears before the markup for mySubmit an error is generated because the JavaScript code cannot find an element with that ID.window.onload = function() {
// initialisation here
}
The above is provided for reference - unless you know what you are doing with chaining and preserving existing onload code this might have side effects down the line. The preferred method is to use addEventListenervar form, btnSubmit, btnReset;
window.addEventListener('load', init);
function init() {
form = document.getElementById("myForm");
btnSubmit = document.getElementById("mySubmit");
btnSubmit.addEventListener('click', checkForm);
btnReset = document.getElementById("myReset");
btnReset.addEventListener('click', resetForm);
}
Note the declaration of form, btnReset and btnSubmit outside of init() - if you do it inside then it's scope is local to the init function and references to these var's in other functions will fail.<!DOCTYPE html>
<html lang="en">
<head>
<title>Form Test</title>
<script type="text/javascript">
window.addEventListener('load', init);
function init() {
form = document.getElementById("myForm");
document.getElementById("mySubmit")
.addEventListener('click', checkForm);
document.getElementById("myReset")
.addEventListener('click', resetForm);
}
function checkForm(evt) {
//
// check form input values
//
console.log('here');
myForm.myButton.disabled = true;
myForm.myButton.value = "Please wait...";
// if fail then prevent form submit
evt.preventDefault();
//form.submit(); //use this to submit the form
}
function resetForm()
{
console.log('here 1');
myForm.myButton.disabled = false;
myForm.myButton.value = "Submit";
}
</script>
</head>
<body>
<form id="myForm" method="POST">
<input id="mySubmit" type="button" name="myButton" value="Submit">
<input id="myReset" type="button" value="Reset Button">
</form>
</body>
</html>
Note the chaining of the getElementById to addEventListener and the use of myForm (id of your form) directly to reference the form.<script src="http://code.jquery.com/jquery.js"></script>
<script>
$(function() {
$('form').submit(function(e) {
$('#mySubmit').val('Please wait ...').prop({disabled: true});
// return true if good
return false;
});
$('#myReset').click(function() {
$('#mySubmit').val('Submit').prop({disabled: false});
});
});
</script>
On clicking submit, this error comes up in F12 developer tools console:
This tells me that the function is not in the right scope. Move it outside of document ready, and it works.
Here is a JS Fiddle Demo. Pay attention to the Load Type setting I have in the demo.
I changed it from OnLoad to No Wrap, which is the same thing as moving it outside of document ready. In other words, these functions need global scope.
That being said, this structure of calling JavaScript functions inline is ... outdated. More recent thought is to keep "separation of concerns". I will post a followup answer with some suggestions.