Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.10.2016, 23:16
Интересующийся
Отправить личное сообщение для Goret Посмотреть профиль Найти все сообщения от Goret
 
Регистрация: 10.10.2016
Сообщений: 10

Переход на другую страницу с учетом регулярных выражений
Добрый день. Необходимо заполнить некую форму, каждый пункт которой проверяется на правильность ввода, если все поля заполнены правильно, то происходит переход на следующую страницу. Вопрос в том, что при проверке правильности меня просто не пускает на др страницу.
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; меня не пускает, но без нее не будет работать правильность ввода данных.
Буду очень благодарен за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 31.10.2016, 23:41
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

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

Последний раз редактировалось Lemme, 31.10.2016 в 23:49.
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2016, 14:46
Интересующийся
Отправить личное сообщение для Goret Посмотреть профиль Найти все сообщения от Goret
 
Регистрация: 10.10.2016
Сообщений: 10

А не подскажите, как сделать так, чтобы и правильность ввода проверялось и происходил переход на другую страницу?
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2016, 17:11
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Goret, чем ответ выше не устраивает?
Ответить с цитированием
  #5 (permalink)  
Старый 01.11.2016, 18:46
Интересующийся
Отправить личное сообщение для Goret Посмотреть профиль Найти все сообщения от Goret
 
Регистрация: 10.10.2016
Сообщений: 10

Lemme,
Тем что мне нужно , чтобы при нажатии на кнопку Сохранить, произошел переход на другую страницу, а этого не происходит. Именно в этом я прошу помощи.
Ответить с цитированием
  #6 (permalink)  
Старый 01.11.2016, 18:59
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Goret, окей, как в данный момент выглядят последние 5 строк функции Verify?
Ответить с цитированием
  #7 (permalink)  
Старый 01.11.2016, 20:28
Интересующийся
Отправить личное сообщение для Goret Посмотреть профиль Найти все сообщения от Goret
 
Регистрация: 10.10.2016
Сообщений: 10

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

я знаю что
return false

не пускает меня на другую страницу. Но, убирая ее, я нарушая весь смысл функции Verify, поскольку она добивается полного правильности заполнения полей
Ответить с цитированием
  #8 (permalink)  
Старый 01.11.2016, 21:17
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

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

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

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

Последний раз редактировалось Lemme, 01.11.2016 в 21:21.
Ответить с цитированием
  #9 (permalink)  
Старый 02.11.2016, 09:47
Интересующийся
Отправить личное сообщение для Goret Посмотреть профиль Найти все сообщения от Goret
 
Регистрация: 10.10.2016
Сообщений: 10

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

return false;

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход на другую страницу DivMan AJAX и COMET 6 20.10.2016 08:17
Переход на другую страницу с прокруткой к нужному блоку Tema52 Элементы интерфейса 8 30.11.2015 13:48
Переход на другую страницу Step48_rus AJAX и COMET 5 22.09.2015 13:46
Переход на другую страницу Step48_rus jQuery 1 14.09.2015 23:26
Переход на другую страницу Deep Internet Explorer 2 11.01.2010 12:58