Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Всем привет! Не знаю где ошибка в скрипте.
 
 автор: hk416   (09.05.2012 в 15:00)   письмо автору
 
 

День добрый уважаемые коллеги. Всех с праздником 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>

  Ответить  
 
 автор: ЯСА   (09.05.2012 в 16:48)   письмо автору
 
   для: hk416   (09.05.2012 в 15:00)
 

Прежде, чем ответить на ваш вопрос (а я имею такую возможность), прошу вас ответить на один уточняющий мой вопрос:

-- Известно ли вам, что при сабмите форма передаёт серверу пары "name=value" ("имя=значение") для всех элементов формы, у которых определены эти самые name?
Т.е. все значения инпутов и текстареа, у которых прописано name="чего-то-там" при сабмите передаются на сервер?

Ответ от вас желателен в кратком формате - "Да, известно/Нет, неизвестно"

  Ответить  
 
 автор: hk416   (09.05.2012 в 21:24)   письмо автору
 
   для: ЯСА   (09.05.2012 в 16:48)
 

>Прежде, чем ответить на ваш вопрос (а я имею такую возможность), прошу вас ответить на один уточняющий мой вопрос:
>
>-- Известно ли вам, что при сабмите форма передаёт серверу пары "name=value" ("имя=значение") для всех элементов формы, у которых определены эти самые name?
>Т.е. все значения инпутов и текстареа, у которых прописано name="чего-то-там" при сабмите передаются на сервер?
>
>Ответ от вас желателен в кратком формате - "Да, известно/Нет, неизвестно"

Да, известно. Надеюсь будет продолжение?

  Ответить  
 
 автор: ЯСА   (10.05.2012 в 10:49)   письмо автору
 
   для: hk416   (09.05.2012 в 21:24)
 

Продолжение:

-- Если "да, известно", то ответьте - зачем вам тогда на сервере при сабмите среди прочих пар name=value получать пару submit=Зарегестрироваться ?

-- Как вы эту пару конкретно используете в вашем файле register2.php ?

-- Почему у вас слово "регистрация" в пределах документа меняет свою орфографическую форму? То она регИ-, то регЕстрация?

Сразу по получении ответа на эти вопросы мною будет дан ответ на заданный вами изначально вопрос (от меня вопросов вам более не будет).

  Ответить  
 
 автор: hk416   (10.05.2012 в 11:30)   письмо автору
 
   для: ЯСА   (10.05.2012 в 10:49)
 

>Продолжение:
>
>-- Если "да, известно", то ответьте - зачем вам тогда на сервере при сабмите среди прочих пар name=value получать пару submit=Зарегестрироваться ?
>
>-- Как вы эту пару конкретно используете в вашем файле register2.php ?
>
>-- Почему у вас слово "регистрация" в пределах документа меняет свою орфографическую форму? То она регИ-, то регЕстрация?
>
>Сразу по получении ответа на эти вопросы мною будет дан ответ на заданный вами изначально вопрос (от меня вопросов вам более не будет).

Хотел поменять название кнопки, такой ответ устроит? По моему так все делают, а не оставляют тупое слово Отправить. То что вы знаток русского языка это отлично, я просто делаю ошибки не только в синтаксисе языка но и в словах, когда пишу что то что ранее не писал, так как волнуюсь. За найденную ошибку спасибо, но хотелось бы услышать уже, почему checkform() не работает так как надо.

  Ответить  
 
 автор: ЯСА   (10.05.2012 в 14:32)   письмо автору
 
   для: hk416   (10.05.2012 в 11:30)
 

>Хотел поменять название кнопки, такой ответ устроит? По моему так все делают, а не оставляют тупое слово Отправить.

"Все", если и меняют "тупое слово Отправить", то делают это:
-- во-первых, в браузере и с помощью Javascript'a, потому как сервер на уже загруженной странице ничего поменять не может, а для этого NAME не нужен, достаточно ID;
-- во-вторых, только в том случае, если форма сабмитится где-то в другом окне/фрейме/ифрейме, имя которого указано в атрибуте TARGET тега FORM, чего в вашем коде не наблюдается.
-----

>За найденную ошибку спасибо

Всегда пожалуйста.
-----

>хотелось бы услышать уже, почему checkform() не работает так как надо.

Так не может браузер найти тот объект, который вы собираетесь проверить.
НЕТ на вашей странице тега, который имел бы id="login"
Вот функция ваша после первой же строчки и впадает в ступор, ибо login == null.
И всё далее вами написанное внутри функции теряет всякий смысл, потому как исполниться не может в принципе.

  Ответить  
 
 автор: hk416   (10.05.2012 в 16:35)   письмо автору
 
   для: ЯСА   (10.05.2012 в 14:32)
 

>>Хотел поменять название кнопки, такой ответ устроит? По моему так все делают, а не оставляют тупое слово Отправить.
>
>"Все", если и меняют "тупое слово Отправить", то делают это:
>-- во-первых, в браузере и с помощью Javascript'a, потому как сервер на уже загруженной странице ничего поменять не может, а для этого NAME не нужен, достаточно ID;
>-- во-вторых, только в том случае, если форма сабмитится где-то в другом окне/фрейме/ифрейме, имя которого указано в атрибуте TARGET тега FORM, чего в вашем коде не наблюдается.
>-----
>
>>За найденную ошибку спасибо
>
>Всегда пожалуйста.
>-----
>
>>хотелось бы услышать уже, почему checkform() не работает так как надо.
>
>Так не может браузер найти тот объект, который вы собираетесь проверить.
>НЕТ на вашей странице тега, который имел бы id="login"
>Вот функция ваша после первой же строчки и впадает в ступор, ибо login == null.
>И всё далее вами написанное внутри функции теряет всякий смысл, потому как исполниться не может в принципе.

Снимаю перед вами шляпу, увидел эту смешную ошибку и сразу же поправил и заработало. Все из за того что разные части кода писались в разное время, трудно не согласится с тем что name_autor и login это разные вещи. Другой вопрос что поле mail все равно штатно посылалось и проверялось, но там я тоже благо нашел ошибку и поправил её.

С уважением к вам и вашему труду hk416

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования