Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переход на другую страницу с учетом регулярных выражений (https://javascript.ru/forum/dom-window/65651-perekhod-na-druguyu-stranicu-s-uchetom-regulyarnykh-vyrazhenijj.html)

Goret 31.10.2016 23:16

Переход на другую страницу с учетом регулярных выражений
 
Добрый день. Необходимо заполнить некую форму, каждый пункт которой проверяется на правильность ввода, если все поля заполнены правильно, то происходит переход на следующую страницу. Вопрос в том, что при проверке правильности меня просто не пускает на др страницу.
1 файл НТМЛ
<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <link rel="stylesheet" type="text/css" href="Style1.css"/>
    <script src="Script1.js" type="text/javascript"></script>
</head>
<body>
    <!--<img src="images/nice-clouds.jpg" alt="Облака"/>-->
    <div id="page" >
        <form action="Exam_2.html" method="post" enctype="multipart/form-data" >
            <fieldset title="Регистрационная форма">
                <legend title="Reg info">Регистрационная форма</legend>
                <p>
                    ФИО
                    <input type="text" name="fio" value="" />
                </p>
                <p>
                    Адрес
                    <input type="text" name="adress" value="" />
                </p>
                <p>
                    E-mail
                    <input type="text" name="e-mail" value="" maxlength="30" />
                </p>
                <p>
                    Телефон
                    <input type="text" name="phone" value="" maxlength="13" />
                </p>
                <input type="reset" name="Reset" value="Очистить" />
                <input type="submit" name="Submit" value="Сохранить" />
            </fieldset>
        </form>
    </div>
</body>
</html>


1 файл Javascript
// JavaScript source code
window.onload = function () {
    document.forms[0].onsubmit = Verify;
}

function Verify() {
    var flag = false;
    var fio_tmpl = /(^[A-Z][a-z]+\s(([A-Z]\.){2}|[A-Z]{2})|^[А-Я][а-я]+\s(([А-Я]\.){2}|[А-Я]{2})){1}\s*$/;
    var fio = document.forms[0].elements["fio"].value;

    if (fio.search(fio_tmpl) == -1) {
        flag = false;
        alert("Неверный формат ФИО:\nИванов ИИ либо Иванов И.И.");
        document.forms[0].elements["fio"].style.background = "red";
    }
    else {
        flag = true;
        document.forms[0].elements["fio"].style.background = "white";
    }
    var adress_tmpl = /^([A-Za-z0-9\s\.,-\№]+)|([А-Яа-я0-9\s\.,-\№]+)$/;
    //var adress_tmpl = /^[A-Za-z]{1,50}|[А-Яа-я]{1,50}$/
    var adress = document.forms[0].elements["adress"].value;

    if (adress.search(adress_tmpl) == -1) {
        flag = false;
        alert("Неверный формат адреса:\nг.Киев, ул.Киевская, 195, кв.18");
        document.forms[0].elements["adress"].style.background = "red";
    }
    else {
        flag = true;
        document.forms[0].elements["adress"].style.background = "white";
    }

    var email_tmpl = /^[A-Za-z](\w|-){2,20}@\w\w+\.[a-z]{2,3}\s*$/;
    var email = document.forms[0].elements["e-mail"].value;

    if (email.search(email_tmpl) == -1) {
        flag = false;
        alert("Неверный формат e-mail:\nlogin@mail.com");
        document.forms[0].elements["e-mail"].style.background = "red";
    }
    else
        document.forms[0].elements["e-mail"].style.background = "white";

    var phone_tmpl = /^0[1-9]{2}\-[0-9]{3}(\-[0-9]{2}){2}$/;
    var phone = document.forms[0].elements["phone"].value;

    if (phone.search(phone_tmpl) == -1) {
        flag = false;
        alert("Неверный формат телефона:\n050-111-11-11");
        document.forms[0].elements["phone"].style.background = "red";
    }
    else
        document.forms[0].elements["phone"].style.background = "white";

    if (flag) {
        alert("Вы ввели все поля корректно!\nСпасибо!");
    }

    return false; // отмена вызова стандартного обработчика onsubmit
}


Получается эта строка return false; меня не пускает, но без нее не будет работать правильность ввода данных.
Буду очень благодарен за помощь.

Lemme 31.10.2016 23:41

Цитата:

Сообщение от Goret (Сообщение 433631)
Получается эта строка return false; меня не пускает, но без нее не будет работать правильность ввода данных.
Буду очень благодарен за помощь.

так и есть
if (flag) {
  alert("Вы ввели все поля корректно!\nСпасибо!");
} else {
  return false; // отмена вызова стандартного обработчика onsubmit
}

Goret 01.11.2016 14:46

А не подскажите, как сделать так, чтобы и правильность ввода проверялось и происходил переход на другую страницу?

Lemme 01.11.2016 17:11

Goret, чем ответ выше не устраивает?

Goret 01.11.2016 18:46

Lemme,
Тем что мне нужно , чтобы при нажатии на кнопку Сохранить, произошел переход на другую страницу, а этого не происходит. Именно в этом я прошу помощи.

Lemme 01.11.2016 18:59

Goret, окей, как в данный момент выглядят последние 5 строк функции Verify?

Goret 01.11.2016 20:28

Lemme, как и выглядели
if (flag) {
  alert("Вы ввели все поля корректно!\nСпасибо!");
} else {
  return false; // отмена вызова стандартного обработчика onsubmit
}

я знаю что
return false

не пускает меня на другую страницу. Но, убирая ее, я нарушая весь смысл функции Verify, поскольку она добивается полного правильности заполнения полей

Lemme 01.11.2016 21:17

Не знаю, что там у вас не работает, все должно работать.

Есть пару вариантов

if (flag) {
  alert("Вы ввели все поля корректно!\nСпасибо!");
  return;
}

return false;


function Verify(event) {
  event.preventDefault();
  // ....
  if (flag) {
    alert("Вы ввели все поля корректно!\nСпасибо!");
    this.submit();
  }
}


И вообще, это гуглится за 2 минуты.
https://learn.javascript.ru/default-browser-action

Goret 02.11.2016 09:47

Lemme,
Спасибо. Добавила в этот код
if (flag) {
  alert("Вы ввели все поля корректно!\nСпасибо!");
  return;
}

return false;

return; и все заработало как надо: при правильности ввода всех полей стал осуществляться переход на другую страницу.


Часовой пояс GMT +3, время: 11:52.