Переход на другую страницу с учетом регулярных выражений
Добрый день. Необходимо заполнить некую форму, каждый пункт которой проверяется на правильность ввода, если все поля заполнены правильно, то происходит переход на следующую страницу. Вопрос в том, что при проверке правильности меня просто не пускает на др страницу.
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; меня не пускает, но без нее не будет работать правильность ввода данных. Буду очень благодарен за помощь. |
Цитата:
if (flag) { alert("Вы ввели все поля корректно!\nСпасибо!"); } else { return false; // отмена вызова стандартного обработчика onsubmit } |
А не подскажите, как сделать так, чтобы и правильность ввода проверялось и происходил переход на другую страницу?
|
Goret, чем ответ выше не устраивает?
|
Lemme,
Тем что мне нужно , чтобы при нажатии на кнопку Сохранить, произошел переход на другую страницу, а этого не происходит. Именно в этом я прошу помощи. |
Goret, окей, как в данный момент выглядят последние 5 строк функции Verify?
|
Lemme, как и выглядели
if (flag) { alert("Вы ввели все поля корректно!\nСпасибо!"); } else { return false; // отмена вызова стандартного обработчика onsubmit } я знаю что return false не пускает меня на другую страницу. Но, убирая ее, я нарушая весь смысл функции Verify, поскольку она добивается полного правильности заполнения полей |
Не знаю, что там у вас не работает, все должно работать.
Есть пару вариантов 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,
Спасибо. Добавила в этот код if (flag) { alert("Вы ввели все поля корректно!\nСпасибо!"); return; } return false; return; и все заработало как надо: при правильности ввода всех полей стал осуществляться переход на другую страницу. |
Часовой пояс GMT +3, время: 11:52. |