Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

209
Views
returning false not stopping the submission of form

My purpose: If the user field and password field are blank, I want to stop form submitting. This is my Code that I am trying:

<!DOCTYPE html>
<html>
<head>
    <script>
        function doit() {

            var usr = document.getElementById('ur').value;
            var psw = document.getElementById('pw').value;

            if ((usr.trim() == '') && (psw.trim() == '')) {
                alert("cannot Submit form");
                return false;
            }

        }
    </script>

</head>


<body>

    <form action="post.php" method="post" onsubmit="doit()">
        User:
        <input type="text" id="ur" name="user">
        <br>
        <br> Pass:
        <input type="password" id="pw" name="pass">
        <br>
        <br>
        <button>Submit</button>
    </form>


</body>
</html>

I am learning JavaScript. Will be helpful if you correct the code with a little explanation why it is not working.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

return false is working fine, the way you are calling that function is wrong.

<form action="post.php" method="post" onsubmit="doit()"> 

Just calls it, doesn't do anything with the return value

<form action="post.php" method="post" onsubmit="return doit()"> 
                                                ^

Will stop the form post on a false returned value.

Read this note on MSDN although it is not IE specific

You can override this event by returning false in the event handler. Use this capability to validate data on the client side to prevent invalid data from being submitted to the server. If the event handler is called by the onsubmit attribute of the form object, the code must explicitly request the return value using the return function, and the event handler must provide an explicit return value for each possible code path in the event handler function.

Now onto another important point.

Your if condition will only stop form submission when both the fields are blank, whereas it should do that even if any one of those two fields is blank. That && (AND) should be an || (OR), and at the end of your functions if nothing returned false, return true then.

over 4 years ago · Santiago Trujillo Report

0

onsubmit event accepts boolean values, since you are not returning anything so it assumes true by default. You need to add return in this event explicitly like mentioned below:

change

onsubmit="doit()"> 

to

onsubmit="return doit()"> 
over 4 years ago · Santiago Trujillo Report

0

Using addEventListener on submit with preventDefault()

document.form1.addEventListener( "submit", function(event) {

    var user = this.querySelector("input[name=user]").value; // this = object of form1
    var pass = this.querySelector("input[name=pass]").value;

    if ( (user.trim() == "") || (pass.trim() == "") ) {
        alert("cannot Submit form");
        event.preventDefault();
    } else {
        alert("submit");
    }

} );
<form action="" method="post" name="form1" >
    Username: <input type="text" name="user" /><br><br>
    Password: <input type="password" name="pass" /><br><hr>
    <input type="submit" value="Submit" />
</form>

codepen

repl.it

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!