Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2017, 06:56
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

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

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>OSS Form</title>
    <link rel="stylesheet"
          href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css"/>
    <style>
        label {
            width: 100px;
        }

        label.error {
            color: red;
        }

        input {
            border: 1px solid #ccc;
        }

        input.error {
            border-color: red;
        }

        .content {
            padding: 15px;
            border: 1px solid #ccc;
        }

        .good {
            display: none;
            margin: 2px 0;
            font-weight: bold;
            color: #0f0;
        }

        .error {
            display: none;
            margin: 2px 0;
            color: #f00;
        }

    </style>
</head>
<body>

<div class="container">
    <div class="row">
        <div class="col-xs-12">
            <div class="content">
                <form onsubmit="myForm()" id="testForm">
                    <div>
                        <label for="firstName">First name</label>
                        <input type="text" id="firstName"/>

                        <span class="good">Ok</span>
                        <p class="error">Пожалуйста введите свое имя!</p>
                    </div>

                    <div>
                        <label for="lastName">Last name</label>
                        <input type="text" id="lastName"/>

                        <span class="good">Ok</span>
                        <p class="error">Пожалуйста введите свою фамилию!</p>
                    </div>

                    <div>
                        <label for="email">Email</label>
                        <input type="text" id="email"/>

                        <span class="good">Ok</span>
                        <p class="error">Неправильно заданный адрес почты</p>
                    </div>

                    <button type="submit">Send</button>
                </form>
            </div>
        </div>
    </div>
</div>

<script>
    function myForm() {
        var firstName = document.getElementById("firstName"),
            lastName = document.getElementById("lastName"),
            email = document.getElementById("email"),

            ok = document.querySelectorAll(".good"),
            error = document.querySelectorAll(".error");

        var valid = true;

        var em = email.match(/^[0-9a-z-\.]+\@[0-9a-z-]{2,}\.[a-z]{2,}$/i);

        if (firstName.value == '') {
            error[0].style.display = "block";

            valid = false;
        } else {
            ok[0].style.display = "inline";
        }
        if (lastName.value == '') {
            error[1].style.display = "block";
            valid = false;
        } else {
            ok[1].style.display = "inline";
        }
        if ((email.value == '') || (!em)) {
            error[2].style.display = "block";

            valid = false;
        }
        else {
            ok[2].style.display = "inline";
        }


        return valid
    }


    // Хотя проще конечно было добавить полям input атрибут required , а поле с input type="text" заменить на input type="email"
    // https://habrahabr.ru/post/175375/
</script>

</body>
</html>

Последний раз редактировалось Black_Star, 25.04.2017 в 07:26.
Ответить с цитированием
  #2 (permalink)  
Старый 25.04.2017, 07:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

onsubmit="return myForm()"

И обрезать крайние пробелы перед проверкой надо, ибо пробел не равен "".
Ответить с цитированием
  #3 (permalink)  
Старый 25.04.2017, 08:15
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Чёт не помогло.
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>OSS Form</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css"/>
    <style>
        label {
            width: 100px;
        }

        label.error {
            color: red;
        }

        input {
            border: 1px solid #ccc;
        }

        input.error {
            border-color: red;
        }

        .content {
            padding: 15px;
            border: 1px solid #ccc;
        }

        .good {
            display: none;
            margin: 2px 0;
            font-weight: bold;
            color: #0f0;
        }

        .error {
            display: none;
            margin: 2px 0;
            color: #f00;
        }

    </style>
</head>
<body>

<div class="container">
    <div class="row">
        <div class="col-xs-12">
            <div class="content">
                <form onsubmit="return myForm()" id="testForm">
                    <div>
                        <label for="firstName">First name</label>
                        <input type="text" id="firstName"/>

                        <span class="good">Ok</span>
                        <p class="error">Пожалуйста введите свое имя!</p>
                    </div>

                    <div>
                        <label for="lastName">Last name</label>
                        <input type="text" id="lastName"/>

                        <span class="good">Ok</span>
                        <p class="error">Пожалуйста введите свою фамилию!</p>
                    </div>

                    <div>
                        <label for="email">Email</label>
                        <input type="text" id="email"/>

                        <span class="good">Ok</span>
                        <p class="error">Неправильно заданный адрес почты</p>
                    </div>

                    <button type="submit">Send</button>
                </form>
            </div>
        </div>
    </div>
</div>

<script>
    function myForm() {
        var firstName = document.getElementById("firstName"),
            lastName = document.getElementById("lastName"),
            email = document.getElementById("email"),

            ok = document.querySelectorAll(".good"),
            error = document.querySelectorAll(".error");

        var valid = true;

        var em = email.match(/^[0-9a-z-\.]+\@[0-9a-z-]{2,}\.[a-z]{2,}$/i);

        if (firstName.value =='') {
            error[0].style.display = "block";

            valid = false;
        } else {
            ok[0].style.display = "inline";
        }
        if (lastName.value =='') {
            error[1].style.display = "block";
            valid = false;
        } else {
            ok[1].style.display = "inline";
        }
        if ((email.value =='') || (!em)) {
            error[2].style.display = "block";

            valid = false;
        }
        else {
            ok[2].style.display = "inline";
        }


        return valid
    }

</script>

</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 25.04.2017, 10:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Black_Star,
value строка 93!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма отправки сообщения с сайта hardwolf Элементы интерфейса 20 24.10.2016 15:00
Формы отправки сообщений Duda.Ml1986@gmail.com Ваши сайты и скрипты 6 31.07.2015 20:46
Закрытие контактной формы после отправки сообщения. maddy Общие вопросы Javascript 2 12.01.2015 07:25
Как сделать disabled кнопки во время отправки формы? Bad Request Events/DOM/Window 7 16.04.2014 13:49
Валидация поля для отправки формы shkarbatov Javascript под браузер 3 25.07.2011 14:07