Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите разобраться с проверкой полей. (https://javascript.ru/forum/events/65300-pomogite-razobratsya-s-proverkojj-polejj.html)

Denver23 11.10.2016 18:42

Помогите разобраться с проверкой полей.
 
Написал код из примера книги Робина Никсона "Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5"(3-е изд.)

Сам код вот:

<!DOCTYPE html>
<html>
	<head>
		<title>Check form</title>
		<style>
			.signup {
				border: 1px solid #999999;
				font: normal 14px helvetica;
				color: #444444;
				}
		</style>
		
		<script>
			function validate(form) {
			fail = validateForename(form.forename.value)
			fail += validateSurname(form.surename.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 == "") ? "Not see forename. \n" : ""	
			}
			
			function validateSurename(field)
			{
				return (field == "") ? "Not see surename. \n" : ""	
			}
			
			function validateUsername(field)
			{
				if(field == "") return "Not see username. \n"
				else if(field.lenght < 5) return "Username are very small.\n"
				else if(/[^a-zA-Z0-9_-]/.test(field)) return "In Username have been only a-z, A-Z, 0-9, - and _. \n"
				return ""
			}
			
			function validatePassword(field)
			{
				if(field == "") return "Not see password. \n"
				else if(field.length < 6) return "Password must be more 6 symbol. \n"
				else if(!/[a-z]/.test(field) || !/[A-Z]/.test(field) || !/[0-9]/.test(field)) return "Password needs 1 symbol from a-z, A-Z and 0-9. \n"
				return ""
			}
			
			function validateAge(field)
			{
				if(isNaN(field)) return "Not see Age. \n"
				else if(field < 18 || field > 110) return "Age must be between 18 and 110. \n"
				return ""
			}
			
			function validateEmail(field)
			{
				if (field == "") return "Not see E-mail adress. \n"
				else if(!((field.indexOf(".") > 0) && (field.indexOf("@") >0)) || /[^a-zA-Z0-9.@_-]/.test(field)) return "E-mail has wrong. \n"
				return ""	
			}
		</script>
	</head>
	<body>
	
		<table class="signup" border="0" cellpadding="2" cellspacing="5" bgcolor="#eeeeee">
			<form method="post" action="validate.html" onSubmit="return validate(this)">
			<tr><td>Name</td><td><input type="text" maxlenght="32" name="forename"></td></tr>
			<tr><td>Surename</td><td><input type="text" maxlenght="32" name="surename"></td></tr>
			<tr><td>Username</td><td><input type="text" maxlenght="16" name="username"></td></tr>
			<tr><td>Password</td><td><input type="text" maxlenght="12" name="password"></td></tr>
			<tr><td>Age</td><td><input type="text" maxlenght="3" name="age"></td></tr>
			<tr><td>E-Mail</td><td><input type="text" maxlenght="64" name="email"></td></tr>
			<tr><td colspan="2" align="center">
			<input type="submit" value="Register"></td></tr>
			</form>
		</table>
	</body>
</html>


По идее он должен проверять и в случае любых недопустимых символов вызывать окно-предупреждение, но это не происходит даже с всеми пустыми полями. В чем может быть проблема? Подскажите пожалуйста, сам разобраться не смог. Заранее спасибо.

рони 11.10.2016 19:09

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

warren buffet 11.10.2016 20:36

Кто запретил смотреть в консоль?

validateSurname != validateSurename

line 16. С какого хера surEname? surname же всегда было. А, типа sure-name - уверенное имя, лол.

Rise 11.10.2016 20:57

Denver23, передай товарищу Никсону что верстает он неправильно, правильно так <form><table>...</table></form>

Denver23 11.10.2016 21:07

Цитата:

Сообщение от warren buffet (Сообщение 431339)
Кто запретил смотреть в консоль?

Спасибо большое за помощь. Действительно ошибка из за моей невнимательности. Я читал про дополнение Firebug для Firefox, но в консоли ничего не было или я что-то не так сделал. Подскажите если знаете как в Хроме можно смотреть.(Я только начинаю, вот и допускаю подобные ошибки)

Denver23 11.10.2016 21:10

А разве это правило нарушает правило вложенности тегов? Или это общее какое-то правило?
P.S. Спасибо, я учту.

рони 11.10.2016 21:10

Denver23,
https://learn.javascript.ru/devtools

рони 11.10.2016 21:14

Denver23,
среди тегов таблицы нет тега формы, в лучшем случае браузер переместит форму куда надо из "каши тегов", но может и не угадать ваших желаний.

Rise 11.10.2016 21:16

Цитата:

Сообщение от Denver23 (Сообщение 431351)
А разве это правило нарушает правило вложенности тегов?

Да, в таблице не табличные теги нужно вкладывать только в ячейки (td/th) либо саму таблицу куда-нибудь вложить, таблицы браузер обрабатывает особым образом.

Denver23 12.10.2016 01:09

Спасибо ещё раз, у меня Firebug не показывал ошибки потому что я его неправильно запускал, сделал по Вашей ссылке и всё заработало.


Часовой пояс GMT +3, время: 05:49.