Home > Back-end >  Why does the output stop at the second if else?
Why does the output stop at the second if else?

Time:01-19

I have html and js code, and running it does not display an error in the console.

All of my if statements work on their own, but when I have all of them inside the function, I cannot get all of them to work.

function validate()
{
    var a = document.getElementById("name").value;
    var letters = /^[A-Za-z] $/;
    if(a=="")
    {
        document.getElementById("errName").innerHTML = "Please enter your full name!";
        return false;
    }
    else if ((!a=="")&&(!a.match(letters)))
    {
        document.getElementById("errName").innerHTML = "Not valid!";
        return false;
    }
    else
    {
        document.getElementById("errName").innerHTML = "OK!";
        return true;
    }
    
    var b = document.getElementById("regno").value;
    var Number = /^[0-9] $/;
    var iChars = "!`@#$%^&*() =-[]\\\';,./{}|\":<>?~_"; 
    if(b=="")
    {
        document.getElementById("errRegNo").innerHTML = "Please enter your contact number!";
        return false;
    }
    else if (!b.match(Number) && !b.match(iChars))
    {
        document.getElementById("errRegNo").innerHTML = "Not valid!";
        return false;
    }
    else if(b.match(Number) || b.match(iChars))
    {
        document.getElementById("errRegNo").innerHTML = "OK!";
        return true;
    }
    
    var c = document.getElementById("email").value;
    var mailformat = /^\w ([\.-]?\w )*@\w ([\.-]?\w )*(\.\w{2,3}) $/;
    if(c=="")
    {
        document.getElementById("errEmail").innerHTML = "Please enter your contact number!";
        return false;
    }
    else if ((!c=="")&&(c.match(mailformat)))
    {
        document.getElementById("errEmail").innerHTML = "Not valid!";
        return false;
    }
    else
    {
        document.getElementById("errEmail").innerHTML = "OK!";
        return true;
    }

    var d = document.getElementById("uid").value;
    if(d=="")
    {
        document.getElementById("errUid").innerHTML = "Please enter your user id!";
        return false;
    }
    else if (!d=="")
    {
        document.getElementById("errUid").innerHTML = "OK!";
        return true;
    }
    var e = document.getElementById("password").value;
    var f = document.getElementById("confirm").value;
    if(e=="")
    {
        document.getElementById("errPassword").innerHTML = "Please enter your password!";
        return false;
    }
    else if (!e==f)
    {
        document.getElementById("errPassword").innerHTML = "Not valid!";
        return true;
    }
    else
    {
        document.getElementById("errPassword").innerHTML = "OK!";
        return true;
    }
    
    if(f=="")
    {
        document.getElementById("errPassword").innerHTML = "Please confirm your password!";
        return false;
    }
    else if (!f==e)
    {
        document.getElementById("errPassword").innerHTML = "Not valid!";
        return true;
    }
    else
    {
        document.getElementById("errPassword").innerHTML = "OK!";
        return true;
    }
}

CodePudding user response:

Try removing

return true;

and add that at the end of the function. Other wise the below code will not execute when a return true is reached. Try the code below.

function validate(){
var a = document.getElementById("name").value;
var letters = /^[A-Za-z] $/;
if(a==""){
    document.getElementById("errName").innerHTML = "Please enter your full name!";
    return false;
}
else if ((!a=="")&&(!a.match(letters))){
    document.getElementById("errName").innerHTML = "Not valid!";
    return false;
}
else{
    document.getElementById("errName").innerHTML = "OK!";
}
var b = document.getElementById("regno").value;
var Number = /^[0-9] $/;
var iChars = "!`@#$%^&*() =-[]\\\';,./{}|\":<>?~_"; 
if(b==""){
    document.getElementById("errRegNo").innerHTML = "Please enter your contact number!";
    return false;
}
else if (!b.match(Number) && !b.match(iChars)){
    document.getElementById("errRegNo").innerHTML = "Not valid!";
    return false;
}
 else if(b.match(Number) || b.match(iChars)){
    document.getElementById("errRegNo").innerHTML = "OK!";
}
var c = document.getElementById("email").value;
var mailformat = /^\w ([\.-]?\w )*@\w ([\.-]?\w )*(\.\w{2,3}) $/;
if(c==""){
    document.getElementById("errEmail").innerHTML = "Please enter your contact number!";
    return false;
}
else if ((!c=="")&&(c.match(mailformat))){
    document.getElementById("errEmail").innerHTML = "Not valid!";
    return false;
}
else{
    document.getElementById("errEmail").innerHTML = "OK!";
}

var d = document.getElementById("uid").value;
if(d==""){
    document.getElementById("errUid").innerHTML = "Please enter your user id!";
    return false;
}
else if (!d==""){
    document.getElementById("errUid").innerHTML = "OK!";
}
var e = document.getElementById("password").value;
var f = document.getElementById("confirm").value;
if(e==""){
    document.getElementById("errPassword").innerHTML = "Please enter your password!";
    return false;
}
else if (!e==f){
    document.getElementById("errPassword").innerHTML = "Not valid!";
    return false;
}
else{
    document.getElementById("errPassword").innerHTML = "OK!";
}
if(f==""){
    document.getElementById("errPassword").innerHTML = "Please confirm your password!";
    return false;
}
else if (!f==e){
    document.getElementById("errPassword").innerHTML = "Not valid!";
    return false;
}
else{
    document.getElementById("errPassword").innerHTML = "OK!";
}
    return true;
}

CodePudding user response:

Since you are using return, in any case where a condition is matched in the starting part of your code, it will return true and thus won't execute the remaining code. For example:

function validate(){
var a = document.getElementById("name").value;
var letters = /^[A-Za-z] $/;


    if(a==""){
        document.getElementById("errName").innerHTML = "Please enter your full name!";
    
    //if this condition is matched, it will simply return true and it will exit the function.
        return false;
    }
    else if ((!a=="")&&(!a.match(letters))){
        document.getElementById("errName").innerHTML = "Not valid!";
        return false;
    }
    else{
        document.getElementById("errName").innerHTML = "OK!";
        return true;
    }
    
    
    // this wont be executed.
    var b = document.getElementById("regno").value;
    var Number = /^[0-9] $/;
    var iChars = "!`@#$%^&*() =-[]\\\';,./{}|\":<>?~_"
  •  Tags:  
  • Related