Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2016, 15:43   #1
KGS
 
Регистрация: 26.02.2016
Сообщений: 5
По умолчанию Не срабатывает скрипт

Здравствуйте!
Вопрос в следующем:
Учу веб-разработку по книге O'Reilly "Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5". Дошел до изучения JavaScript, и на примере в книге у меня возникла загвоздка. Почему то набранный код из книги у меня не выполняет JavaScript, а пример скачанный с оф. сайта книге проходит все нормально. Сравнивал построчно, нашел кое-какие ошибки, исправил, но проблема не ушла. Возможно где-то я не замечаю еще какую-нибудь ошибку, но найти её пока что не могу. Не могли бы вы помочь с этой проблемой? Заранее спасибо!

*Код в приложении.

Мой код:
Код HTML:
<!DOCTYPE html>
<html>
<head>
	<title>Пример формы </title>
	<style>
		.signup {
		border:1px solid #999999;
		font: normal 14px helvetica;
		color: #4444444;
		}
	</style>

	<script>
		function validate(form) 
		{
			fail  = validateForename(form.forename.value)
			fail += validateSurname(form.surname.value)
			fail += validateUsername(form.username.value)
			fail += validatePassword(form.password.value)
			fail += validateAge(form.age.value)
			fail += validateEmail(form.email.value)
			
			if 	 (fail == "") 	return true
			else { alert(fail); return false }
		}
		
		function validateForename(field)
		{
			return (field == "") ? "Не введено имя.\n" : ""
		}
		
		function validateSurname(field)
		{
			return (field == "") ? "Не введена фамилия.\n" : ""
		}
		
		function validateUsername(field)
		{
			if (field == "") return "Не введено имя пользователя.\n"
			else if (field.length < 5)
				return "В имени пользователя должно быть не менее 5 символов.\n"
			else if (/[^a-zA-Z0-9_-]/.test(field))
				return "В имени пользователя разрешены только a-z, A-Z, 0-9, - и _.\n"
			return ""
		}
		
		function validatePassword(field)
		{
			if (field == "") return "Не введен пароль.\n"
			else if (field.length < 6)
				return "В пароле должно быть не менее 6 символов.\n"
			else if (!/[a-z]/.test(field) ||
					 !/[A-Z]/.test(field) ||
					 !/[0-9]/.test(field))
				return "Пароль требует 1 символ из каждого набора a-z, A-Z, 0-9.\n"
			return ""
		}
		
		function validateAge(field)
		{
			if (isNaN(field)) return "Не введен возраст.\n"
			else if (field < 18 || field > 110)
				return "Возраст не должен быть между 18 и 110.\n"
			return ""
		}
		
		function validateEmail(field)
		{
			if (field == "") return "Не введен адрес электронной почты.\n"
			else if (!((field.indexOf(".") > 0) &&
						(field.indexOf("@") > 0)) ||
						/[^a-zA-Z0-9_-]/.test(field))
				return "Электронный адрес имеет не верный формат.\n"
			return ""
		}
	</script>
</head>
<body>
	<table border="0" cellpadding="2" cellspacing="5" bgcolor="#eeeeee">
	<th colspan="2" align="center">Регистрация</th>
		<form method="post" action="adduser.php" onsubmit="return validate(this)">
			<tr><td>Имя</td>
				<td><input type="text" maxlength="32" name="forename"></td></tr>
			<tr><td>Фамилия</td>
				<td><input type="text" maxlength="32" name="surename"></td></tr>
			<tr><td>Логин</td>
				<td><input type="text" maxlength="16" name="username"></td></tr>
			<tr><td>Пароль</td>
				<td><input type="text" maxlength="12" name="password"></td></tr>
			<tr><td>Возраст</td>
				<td><input type="text" maxlength="3" name="age"></td></tr>
			<tr><td>Электронный адрес</td>
				<td><input type="text" maxlength="64" name="email"></td></tr>
			<tr><td colspan="2" align="center"><input type="submit" value="Зарегистрироваться"></td></tr>
		</form>
	</table>
</body>
</html>
Пример:
Код HTML:
<!DOCTYPE html>
<html>
  <head>
    <title>An Example Form</title>
    <style>
		.signup {
		border:1px solid #999999;
		font: normal 14px helvetica;
		color: #4444444;
		}
	</style>

    <script>
      function validate(form)
      {
        fail  = validateForename(form.forename.value)
        fail += validateSurname(form.surname.value)
        fail += validateUsername(form.username.value)
        fail += validatePassword(form.password.value)
        fail += validateAge(form.age.value)
        fail += validateEmail(form.email.value)

        if   (fail == "")   return true
        else { alert(fail); return false }
      }

      function validateForename(field)
      {
        return (field == "") ? "Не введено имя.\n" : ""
      }
      
      function validateSurname(field)
		{
			return (field == "") ? "Не введена фамилия.\n" : ""
		}

		function validateUsername(field)
		{
			if (field == "") return "Не введено имя пользователя.\n"
			else if (field.length < 5)
				return "В имени пользователя должно быть не менее 5 символов.\n"
			else if (/[^a-zA-Z0-9_-]/.test(field))
				return "В имени пользователя разрешены только a-z, A-Z, 0-9, - и _.\n"
			return ""
		}

      function validatePassword(field)
		{
			if (field == "") return "Не введен пароль.\n"
			else if (field.length < 6)
				return "В пароле должно быть не менее 6 символов.\n"
			else if (!/[a-z]/.test(field) ||
					 !/[A-Z]/.test(field) ||
					 !/[0-9]/.test(field))
				return "Пароль требует 1 символ из каждого набора a-z, A-Z, 0-9.\n"
			return ""
		}

      function validateAge(field)
		{
			if (isNaN(field)) return "Не введен возраст.\n"
			else if (field < 18 || field > 110)
				return "Возраст не должен быть между 18 и 110.\n"
			return ""
		}

      function validateEmail(field)
		{
			if (field == "") return "Не введен адрес электронной почты.\n"
			else if (!((field.indexOf(".") > 0) &&
						(field.indexOf("@") > 0)) ||
						/[^a-zA-Z0-9_-]/.test(field))
				return "Электронный адрес имеет не верный формат.\n"
			return ""
		}
    </script>
  </head>
  <body>
    <table border="0" cellpadding="2" cellspacing="5" bgcolor="#eeeeee">
      <th colspan="2" align="center">Регистрация</th>
      <form method="post" action="adduser.php" onsubmit="return validate(this)">
        <tr><td>Имя</td>
          <td><input type="text" maxlength="32" name="forename"></td></tr>
        <tr><td>Фамилия</td>
          <td><input type="text" maxlength="32" name="surname"></td></tr>
        <tr><td>Логин</td>
          <td><input type="text" maxlength="16" name="username"></td></tr>
        <tr><td>Пароль</td>
          <td><input type="text" maxlength="12" name="password"></td></tr>
        <tr><td>Возраст</td>
          <td><input type="text" maxlength="3"  name="age"></td></tr>
        <tr><td>Электронная почта</td>
          <td><input type="text" maxlength="64" name="email"></td></tr>
        <tr><td colspan="2" align="center"><input type="submit" value="Зарегистрироваться"></td></tr>
      </form>
    </table>
  </body>
</html>
Вложения
Тип файла: txt Мой код.txt (2.9 Кб, 9 просмотров)
Тип файла: txt Пример.txt (3.1 Кб, 7 просмотров)

Последний раз редактировалось KGS; 22.04.2016 в 15:46.
KGS вне форума Ответить с цитированием
Старый 22.04.2016, 16:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

вы сделали ошибку в имени поля.
в оригинале:
Цитата:
Код:
        <tr><td>Фамилия</td>
          <td><input type="text" maxlength="32" name="surname"></td></tr>
у вас в коде:
Цитата:
Код:
			<tr><td>Фамилия</td>
				<td><input type="text" maxlength="32" name="surename"></td></tr>
поэтому, когда в процедуре валидации доходит до строки:
fail += validateSurname(form.surname.value)

то на этом проверка и завершается.

p.s. а ещё бы я кодировку задавал в тексте явно.
для английского в этом нет смысла, а вот если Вы используете кириллицу, то нужно обязательно задавать кодировку, не надо полагаться на браузер!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.04.2016, 17:28   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Код:
if (field < 18 || field > 110)
  return "Возраст не должен быть между 18 и 110.\n"
что-то не так у переводчиков орейли с логикой)
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 22.04.2016, 18:50   #4
KGS
 
Регистрация: 26.02.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вы сделали ошибку в имени поля.
в оригинале:


у вас в коде:


поэтому, когда в процедуре валидации доходит до строки:
fail += validateSurname(form.surname.value)

то на этом проверка и завершается.

p.s. а ещё бы я кодировку задавал в тексте явно.
для английского в этом нет смысла, а вот если Вы используете кириллицу, то нужно обязательно задавать кодировку, не надо полагаться на браузер!
Спасибо, заработало! Надо было внимательнее искать ошибку )))
На счет кодировки возьму на заметку )
KGS вне форума Ответить с цитированием
Старый 22.04.2016, 18:52   #5
KGS
 
Регистрация: 26.02.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
Код:
if (field < 18 || field > 110)
  return "Возраст не должен быть между 18 и 110.\n"
что-то не так у переводчиков орейли с логикой)
Не, это у меня опечатка. Сейчас в книге проверил, там написано: "Возраст должен быть между 18 и 110.\n"
KGS вне форума Ответить с цитированием
Старый 23.04.2016, 02:37   #6
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Интересно чем им возраст 111 не угодил.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP. Не срабатывает header , гляньте скрипт, нужно подправить flyfire Помощь студентам 7 24.05.2012 23:18
Скрипт срабатывает при нажатии в любом месте экрана A67809R JavaScript, Ajax 1 13.02.2012 13:12
Php! JSON_ECODE, Не срабатывает на хостинге след. скрипт: AlienNation PHP 2 09.10.2011 18:31
Скрипт срабатывает один раз, а далее ошибка BloodA JavaScript, Ajax 8 20.07.2011 16:02
мой сайт взломали и в коды скриптов добавили вот этот скрипт. Что за скрипт? nsbox JavaScript, Ajax 9 21.01.2010 18:19