Проверка формы PHP с Javascript не останавливается при возврате false - PullRequest
0 голосов
/ 28 октября 2018

Я пытался сделать простую проверку HTML-формы с помощью Javascript

Я уже некоторое время борюсь с этим на нескольких примерах, и независимо от того, что я следую, моя страница индекса продолжает загружаться посленажав кнопку на форме, я полагаю, что я поставил return false в правильных местах, чтобы прервать выполнение остального кода. Есть идеи, почему это так?«Мой» код ниже

Примечание: я пробовал атрибут novalidate с формой, это деактивирует проверку браузера, но все равно отправляет меня на мою страницу индекса. Идеальная функциональность не должна загружать страницу индекса и оставатьсяна странице регистрации с предупреждениями под правильными полями ввода

index.php

<?php
if (isset($_POST["register"]))
{
    $user = $_POST["username"];
    echo "Welcome ".$user;
}

?>

register.php

<!DOCTYPE html>
<html>
    <head>
        <title>Form validation with javascript</title>
        <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="wrapper">
    <form novalidate method="POST" action="index.php" onsubmit="return Validate()" name="vform">
        <div>
            <input type="text" name="username" class="textInput" placeholder="Username">
            <div id="name_error" class="val_error"></div>
        </div>
        <div>
            <input type="email" name="email" class="textInput" placeholder="Email">
            <div id="email_error" class="val_error"></div>
        </div>
        <div>
            <input type="password" name="password" class="textInput" placeholder="Password">
        </div>
        <div>
            <input type="password" name="password_confirmation" class="textInput" placeholder="Password confirmation">
            <div id="password_error" class="val_error"></div>
        </div>
        <div>
            <input type="submit" value="Register" class="btn" name="register">
        </div>
    </form>

</div>
</body>
</html>
<!-- Adding javascript -->
<script type="text/javascript">
    // GETTING ALL INPUT TEXT OBJECTS
    var username = document.forms["vform"]["username"];
    var email = document.forms["vform"]["email"];
    var password = document.forms["vform"]["password"];
    var password_confirmation = document.forms["vform"]["password_confirmation"];

    // GETTING ALL ERROR DISPLAY OBJECTS
    var name_error = document.getElementId("name_error");
    var email_error = document.getElementId("email_error");
    var password_error = document.getElementId("password_error");

    // SETTING ALL EVENT LISTENERS
    username.addEventListener("blur", nameVerify, true);
    email.addEventListener("blur", emailVerify, true);
    password.addEventListener("blur", passwordVerify, true);

    // Validation Function
    function Validate(){
        // Username Validation
        if (username.value == ""){
            username.style.border = "1px solid red";
            name_error.textContent = "Username is required";
            username.focus();
            return false;
        }
        // Email Validation
        if (email.value == ""){
            email.style.border = "1px solid red";
            email_error.textContent = "email is required";
            email.focus();
            return false;
        }
        // Password Validation
        if (password.value == ""){
            password.style.border = "1px solid red";
            password_error.textContent = "password is required";
            password.focus();
            return false;
        }

        // check if the two passwords match
        if (password.value != password_confirmation.value)
        {
            pasword.style.border = "1px solid red";
            pasword_confirmation.style.border = "1px solid red";
            password_error.innerHTML = "The two passwords dont match";
            return false;
        }
    }

    // event handler functions
    function nameVerify(){
        if (username.value != "")
        {
            username.style.border = "1px solid #5E6E66";
            name_error.innerHTML = "";
            return true;
        }
    }

    function emailVerify(){
        if (email.value != "")
        {
            email.style.border = "1px solid #5E6E66";
            email_error.innerHTML = "";
            return true;
        }
    }

function passwordVerify(){
        if (passwprd.value != "")
        {
            passwprd.style.border = "1px solid #5E6E66";
            passwprd_error.innerHTML = "";
            return true;
        }
    }

</script>

style.css

#wrapper{
    width: 35%;
    margin: 50px auto;
    padding: 20px;
    background: #EFFFE0;
}

form{
    width: 50%;
    margin: 100px auto;
}

form div{
    margin: 3px auto;
}

.textInput{
    margin-top: 2px;
    height: 28px;
    border: 1px solid #5E6E66;
    font-size: 16px;
    padding: 1px;
    width: 100%;
}

.btn{
    padding: 7px;
    width: 100%;
}

.val_error{
    color: #FF1F1F;
}

Большое спасибо за любую помощь, которую вы можете оказать!

1 Ответ

0 голосов
/ 13 ноября 2018

Присвойте идентификатор вашей форме, прикрепите к ней событие отправки формы, и если проверки не пройдут, вы можете использовать event.preventDefault ();прекратить подачу формы.Попробуйте код ниже.

<!DOCTYPE html>
<html>
<head>
   <title>Page Title</title>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

</head>
<body>


     <form action="your_file_name.php" method="post" id="myForm">
        First name:<br>
        <input type="text" name="firstname"  id="firstname">
        <br>
        Last name:<br>
        <input type="text" name="lastname" id="lastname" >
        <br><br>
        <input type="submit" value="Submit">
    </form> 

$( "#myForm" ).submit(function(event) {

 if($("#firstname").val()== "" || $("#lastname").val()== "") //Your validation conditions.
  {
        alert("Kindly fill all fields.");
        event.preventDefault();
  }
  //submit the form.
    });
   </script>
   </html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...