когда событие onsubmit в форме работает только первая функция, я хочу вернуть все 3 функции с true - PullRequest
0 голосов
/ 10 октября 2019

Ajax-код для проверки электронной почты является новым или существующим

Я хочу, чтобы все три функции return(checkpass() && check() && validate(this)) работали. В настоящее время работает только функция checkpass(). Если я пишу return(check() && checkpass() && validate(this)), срабатывает только функция check().

function check(){
    var uname=document.forms["register_form"]["uname"].value;
    var uemail=document.forms["register_form"]["uemail"].value;
    var upassword=document.forms["register_form"]["upassword"].value;
    var ucpassword=document.forms["register_form"]["ucpassword"].value;

    if(uname=="" || uemail=="" || upassword=="" || ucpassword==""){
        alert("all fields must be filled out");
        return false;
    }
}
function checkpass(){
    var upass=document.forms["register_form"]["upassword"].value;
    var ucpass=document.forms["register_form"]["ucpassword"].value;
    if(upass!=ucpass){
        alert("Confirm password should be same as password");
        return false;
    }
    if(upass=="" && ucpass==""){
        alert("cannot be kept blank");
        return false;
    }
}
function validate(useremail){
    xhttp =new XMLHttpRequest();
    xhttp.open("GET","emailvalidate.php?uemail="+useremail,true);
    xhttp.send();
    xhttp.onreadystatechange=function(){
        if (xhttp.readyState == 4) {
            if(xhttp.responseText==""){
                document.getElementById("alert").innerHTML="cannot be empty";
                return false;
            }
            else if(xhttp.responseText=="OK"){
                document.getElementById("alert").innerHTML="<span class='badge badge-pill badge-primary'>welcome new user</span>";
            }
            else if(xhttp.responseText=="NO"){
                document.getElementById("alert").innerHTML="<span class='badge badge-pill badge-primary'>Email Already Exist</span>";
                return false;
            }
            else{
                document.getElementById("alert").innerHTML="error happened";
                return false;
            }
        }
    };
}
<form method="post" action="register_action.php" id="register_form" name="register_form" onsubmit="return (checkpass() && check() && validate(this));">
    <br>
    <div class="form-group">
        <label for="uname">Name:</label>
        <input type="text" class="form-control" id="uname" placeholder="Enter Name " name="uname">
    </div>
    <div class="form-group">
        <label for="uemail">Email id: </label>
        <input type="email" class="form-control" id="uemail" placeholder="Enter Email ID" name="uemail"
               onkeyup="javascript:validate(this.value)"><br>
        <span id="alert"></span>
    </div>
    <div class="form-group">
        <label for="upassword">Enter Password:</label>
        <input type="password" class="form-control" id="upassword" placeholder="Set password" name="upassword">
    </div>
    <div class="form-group">
        <label for="ucpassword">Confirm Password:</label>
        <input type="password" class="form-control" id="ucpassword" placeholder="Enter password again" name="ucpassword" >
    </div>
    <button type="submit" class="btn btn-success">Submit</button>
</form>

1 Ответ

0 голосов
/ 10 октября 2019

Почему бы вам не обернуть их в функцию:

var wrapper = function(){
   return checkpass() && check() && validate(this);
}

, а затем

<form onsubmit="javascript:wrapper()">

Кроме того, вы можете каррировать эту цепочку функций для повышения читабельности, но хорошо,пример выше должен решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...