Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JavaScript) Выкидывает из функции на первой же строке / 9 сообщений из 9, страница 1 из 1
31.01.2009, 23:09
    #35789900
Fuse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
Проблема в том, что после захода в функцию проверки, происходит выход из неё сразу же после первой строки... Причём сценарий почему-то выполняет submit.
Кто-нибудь может подсказать в чем может заключаться ошибка? :(


Скрипт располагается в разделе head:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<script language="javascript" type="text/javascript">
<!--
	function CheckConditions()
	{
		var is_error = false;
		var email_check = new RegExp("[0-9a-z_-]+[@]+[0-9a-z_-^.]+.[a-z]{2,3}","i");
		
		if (!(email_check.test(document.frm_message.email.value)))
		{
			is_error = true;
			document.getElementById("errorEMail").style.display = "block";
		}
		else
		{
			document.getElementById("errorEMail").style.display = "none";
		}
		if ((document.frm_message.name.value == "") || (document.frm_message.email.value == "") ||
		    (document.frm_message.subject.value == "") || (document.frm_message.enquiry.value == ""))
		{
			is_error = true;
			document.getElementById("errorFields").style.display = "block";
		}
		else
		{
			document.getElementById("errorFields").style.display = "none";
		}

		if (!is_error) {
			document.frm_message.submit();
		}
	}
//-->
</script>
Форма выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<form action="contact_us_processor.php" method="post" name="frm_message" id="frm_message">
                    <table width="100%" border="0" cellpadding="2" cellspacing="5">
					  <tbody>					  <tr>
						<td class="inputRequirement">* - поля обязательные для заполнения</td>
					  </tr>
					  <tr>
						<td class="main">Полное имя:<strong class="inputRequirement">*</strong></td>
					  </tr>
					  <tr>
						<td class="main"><input id="name" name="name" type="text"></td>
					  </tr>
					  <tr>
						<td class="main">Ваш адрес эл. почты:<strong class="inputRequirement">*</strong></td>
					  </tr>
					  <tr>
						<td class="main"><input id="email" name="email" type="text"></td>
					  </tr>
					  <tr>
						<td class="main">Тема сообщения:<strong class="inputRequirement">*</strong></td>
					  </tr>
					  <tr>
						<td class="main"><input id="subject" name="subject" type="text"></td>
					  </tr>
					  <tr>
						<td class="main">Текст сообщения:<strong class="inputRequirement">*</strong></td>
					  </tr>
					  <tr>
						<td><textarea id="enquiry" name="enquiry" wrap="soft" cols="50" rows="15"></textarea></td>
					  </tr>
					</tbody></table>
					<table width="100%" border="0" cellpadding="0" cellspacing="0">
						<tbody><tr><td><img src="images/pixel_trans.gif" alt="" width="100%" border="0" height="10"></td></tr>
					</tbody></table>
					<table width="100%" border="0" cellpadding="2" cellspacing="0">
						  <tbody><tr>
							<td width="10"><img src="images/pixel_trans.gif" alt="" width="10" border="0" height="1"></td>
							<td class="bg_input" align="right"><input type="image" title=" Отправить " src="images/buttons/button_send.gif" alt="Отправить" width="73" height="20" border="0" onclick="CheckConditions();"></td>
							<td width="10"><img src="images/pixel_trans.gif" alt="" width="10" border="0" height="1"></td>
						  </tr>
					</tbody></table></form>
...
Рейтинг: 0 / 0
01.02.2009, 00:17
    #35789952
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
Консоль ошибок указывает на проблемное место:

> "[0-9a-z_-]+[@]+[0-9a-z_-^.]+.[a-z]{2,3}"

Оно немного иначе пишется:
Код: plaintext
"^[0-9a-z_-]+@[0-9a-z-]+\\.[a-z]{2,3}$"
(нижнее подчёркивание в имени домена не допускается, разделителем должна быть точка, а не любой символ). Впрочем, есть ещё ограничение на использование "-", он не должен быть первым или последним, в имени пользователя допускается точка.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
01.02.2009, 00:48
    #35789961
Fuse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
регулярное выражение я уже исправил. тестил JavaScript Debugger что в ФФ.
Теперь проходит нормально, первые условия вроде срабатывают,
поражает, что последнее условие
Код: plaintext
1.
2.
if (!is_error) {
    document.frm_message.submit();
}
срабатывает даже когда is_error = true; и соответственно срабатывает сабмит
как так?
...
Рейтинг: 0 / 0
01.02.2009, 01:06
    #35789970
VxS_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
Fuse,
может дело не в условии, а в том, что type="image" по дефолту сабмититься и ему плевать на результат вашей функции?
...
Рейтинг: 0 / 0
01.02.2009, 08:48
    #35790032
Fuse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
VxS_
может дело не в условии, а в том, что type="image" по дефолту сабмититься и ему плевать на результат вашей функции?
Вы правы, когда поменял type на button все заработало.
Но как быть, мне нужна кнопка именно с картинкой иначе это нарушит дизайн. Как при type="image" отменить сабмит по дефолту?
...
Рейтинг: 0 / 0
01.02.2009, 09:07
    #35790039
Fuse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
Все проблему решил, большое спасибо за помощь!!!
изменил onClick на
Код: plaintext
onclick="CheckConditions(); return false;"
...
Рейтинг: 0 / 0
01.02.2009, 12:06
    #35790131
Frenzy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
FuseVxS_
может дело не в условии, а в том, что type="image" по дефолту сабмититься и ему плевать на результат вашей функции?
Вы правы, когда поменял type на button все заработало.
Но как быть, мне нужна кнопка именно с картинкой иначе это нарушит дизайн. Как при type="image" отменить сабмит по дефолту?

в таких случаях надо как минимум использовать return CheckConditions()
...
Рейтинг: 0 / 0
01.02.2009, 12:23
    #35790137
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
Frenzy return CheckConditions()
Это в том случае, если CheckConditions возвращает true или false. А так, вполне сойдёт.
...
Рейтинг: 0 / 0
01.02.2009, 12:57
    #35790155
Frenzy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Выкидывает из функции на первой же строке
ShSergeFrenzy return CheckConditions()
Это в том случае, если CheckConditions возвращает true или false. А так, вполне сойдёт.

естественно. это я к тому как сделать, чтобы "ему не было плевать на результат функции".
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JavaScript) Выкидывает из функции на первой же строке / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]