|
|
|
| День добрый уважаемые коллеги. Всех с праздником 9 мая! Вот пишу скрипт для проверки полей на JS. Конечно скрипт имеет стадию полуфабриката, но если поможете найти ошибку, то он будет готов, так как только эта ошибка и мешает. В общем проблема в том, что функция checkform() не хочет вызываться, хотя вроде как она должна вызываться после нажатия кнопки, отправки формы,и если форма заполнена неправильно, должна Алертом вывести ошибку, и не дать неправильным данным отправится на серв. С функцией protect_mail() все в порядке, она добросовестно проверяет входные данные, но как понятно из кода в отличие от checkform() она всего лишь предупреждает пользователя о том что данные не корректны.
Еще раз повторюсь код полуфабрикат поэтому не удивляетесь что проверяется пока только одно поле.
<html>
<head>
<style type="text/css">
.yes {color : green;}
.no {color : red;}
#form label {
display : block;
float : left;
width : 12em;
}
#form div {margin-top: 20px;}
#form {
width : 20 em;
height : 60 em;
padding : 10px;
}
</style>
<script type="text/javascript">
function checkform()
{
var login = document.getElementById('login');
var password = document.getElementById('password');
var re_password = document.getElementById('re_password');
var mail= document.getElementById('mail');
if(!login.value){alert("Неправильно заполнена форма!!!!");
return false;}
if(/[a-z0-9_]+@[a-z0-9_]+\.[a-z]{2,3}/i.test(mail))
{
alert("Неправильно заполнена форма!!!!");
return false;
}
else return true;
}
window.onload = function ()
{
var myform = document.getElementById('form');
myform.onsubmit= checkform;
}
function protect_mail(mail)
{
var c = document.getElementById('pr_mail');
if(/[a-z0-9_]+@[a-z0-9_]+\.[a-z]{2,3}/i.test(mail)){
c.className='yes';
c.innerHTML="yes";
}
else {c.className='no';
c.innerHTML="no";
}
}
</script>
</head>
<body>
<h1>Регистрация</h1>
<fieldset>
<legend>Регестрация</legend>
<form action="register2.php" name="form" id="form" method="post" enctype="multipart/form-data" >
<div>
<label>Имя:</label>
<input type="text" id="name_autor" name="name_autor" maxlength="40" size="30"/> </p>
</div>
<div>
<label>Пароль: </label>
<input type="password" id="password" maxlenght="15"/> </p>
</div>
<div>
<label>Повторите пароль: </label>
<input type="password" id="re_password" maxlenght="15"/> </p>
</div>
<div>
<label>Введите почту: </label>
<input type="text" id="mail" maxlenght="15" onkeydown="protect_mail(this.value);" />
<p id="pr_mail"> Статус</p>
</div>
<p><input type="radio" name="gender" value="1" checked="checked ">Мужчина</p>
<p><input type="radio" name="gender" value="2">Женщина</p>
<p>Год рождения<select name="date_of_birth" size="1">
<option value="1989">1989</option>
<option value="1988">1988</option>
</select>
</p>
<div>
<label for="mail_on">Посылать уведомления на мыло?</label>
<input type="checkbox" id="mail_on" name="mail_on" value="1">
</div>
<div>
<textarea id="post" name="post" cols="50" rows="6">Что нибудь о себе :-)</textarea>
<div>
<input type="submit" value="Зарегестрироваться" id="submit" name="submit"/>
</fieldset>
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: hk416
(09.05.2012 в 15:00)
| | Прежде, чем ответить на ваш вопрос (а я имею такую возможность), прошу вас ответить на один уточняющий мой вопрос:
-- Известно ли вам, что при сабмите форма передаёт серверу пары "name=value" ("имя=значение") для всех элементов формы, у которых определены эти самые name?
Т.е. все значения инпутов и текстареа, у которых прописано name="чего-то-там" при сабмите передаются на сервер?
Ответ от вас желателен в кратком формате - "Да, известно/Нет, неизвестно" | |
|
|
|
|
|
|
|
для: ЯСА
(09.05.2012 в 16:48)
| | >Прежде, чем ответить на ваш вопрос (а я имею такую возможность), прошу вас ответить на один уточняющий мой вопрос:
>
>-- Известно ли вам, что при сабмите форма передаёт серверу пары "name=value" ("имя=значение") для всех элементов формы, у которых определены эти самые name?
>Т.е. все значения инпутов и текстареа, у которых прописано name="чего-то-там" при сабмите передаются на сервер?
>
>Ответ от вас желателен в кратком формате - "Да, известно/Нет, неизвестно"
Да, известно. Надеюсь будет продолжение? | |
|
|
|
|
|
|
|
для: hk416
(09.05.2012 в 21:24)
| | Продолжение:
-- Если "да, известно", то ответьте - зачем вам тогда на сервере при сабмите среди прочих пар name=value получать пару submit=Зарегестрироваться ?
-- Как вы эту пару конкретно используете в вашем файле register2.php ?
-- Почему у вас слово "регистрация" в пределах документа меняет свою орфографическую форму? То она регИ-, то регЕстрация?
Сразу по получении ответа на эти вопросы мною будет дан ответ на заданный вами изначально вопрос (от меня вопросов вам более не будет). | |
|
|
|
|
|
|
|
для: ЯСА
(10.05.2012 в 10:49)
| | >Продолжение:
>
>-- Если "да, известно", то ответьте - зачем вам тогда на сервере при сабмите среди прочих пар name=value получать пару submit=Зарегестрироваться ?
>
>-- Как вы эту пару конкретно используете в вашем файле register2.php ?
>
>-- Почему у вас слово "регистрация" в пределах документа меняет свою орфографическую форму? То она регИ-, то регЕстрация?
>
>Сразу по получении ответа на эти вопросы мною будет дан ответ на заданный вами изначально вопрос (от меня вопросов вам более не будет).
Хотел поменять название кнопки, такой ответ устроит? По моему так все делают, а не оставляют тупое слово Отправить. То что вы знаток русского языка это отлично, я просто делаю ошибки не только в синтаксисе языка но и в словах, когда пишу что то что ранее не писал, так как волнуюсь. За найденную ошибку спасибо, но хотелось бы услышать уже, почему checkform() не работает так как надо. | |
|
|
|
|
|
|
|
для: hk416
(10.05.2012 в 11:30)
| | >Хотел поменять название кнопки, такой ответ устроит? По моему так все делают, а не оставляют тупое слово Отправить.
"Все", если и меняют "тупое слово Отправить", то делают это:
-- во-первых, в браузере и с помощью Javascript'a, потому как сервер на уже загруженной странице ничего поменять не может, а для этого NAME не нужен, достаточно ID;
-- во-вторых, только в том случае, если форма сабмитится где-то в другом окне/фрейме/ифрейме, имя которого указано в атрибуте TARGET тега FORM, чего в вашем коде не наблюдается.
-----
>За найденную ошибку спасибо
Всегда пожалуйста.
-----
>хотелось бы услышать уже, почему checkform() не работает так как надо.
Так не может браузер найти тот объект, который вы собираетесь проверить.
НЕТ на вашей странице тега, который имел бы id="login"
Вот функция ваша после первой же строчки и впадает в ступор, ибо login == null.
И всё далее вами написанное внутри функции теряет всякий смысл, потому как исполниться не может в принципе. | |
|
|
|
|
|
|
|
для: ЯСА
(10.05.2012 в 14:32)
| | >>Хотел поменять название кнопки, такой ответ устроит? По моему так все делают, а не оставляют тупое слово Отправить.
>
>"Все", если и меняют "тупое слово Отправить", то делают это:
>-- во-первых, в браузере и с помощью Javascript'a, потому как сервер на уже загруженной странице ничего поменять не может, а для этого NAME не нужен, достаточно ID;
>-- во-вторых, только в том случае, если форма сабмитится где-то в другом окне/фрейме/ифрейме, имя которого указано в атрибуте TARGET тега FORM, чего в вашем коде не наблюдается.
>-----
>
>>За найденную ошибку спасибо
>
>Всегда пожалуйста.
>-----
>
>>хотелось бы услышать уже, почему checkform() не работает так как надо.
>
>Так не может браузер найти тот объект, который вы собираетесь проверить.
>НЕТ на вашей странице тега, который имел бы id="login"
>Вот функция ваша после первой же строчки и впадает в ступор, ибо login == null.
>И всё далее вами написанное внутри функции теряет всякий смысл, потому как исполниться не может в принципе.
Снимаю перед вами шляпу, увидел эту смешную ошибку и сразу же поправил и заработало. Все из за того что разные части кода писались в разное время, трудно не согласится с тем что name_autor и login это разные вещи. Другой вопрос что поле mail все равно штатно посылалось и проверялось, но там я тоже благо нашел ошибку и поправил её.
С уважением к вам и вашему труду hk416 | |
|
|
|
|