Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.06.2011, 23:15
Аватар для voodoo
Новичок на форуме
Отправить личное сообщение для voodoo Посмотреть профиль Найти все сообщения от voodoo
 
Регистрация: 26.06.2011
Сообщений: 3

функция проверки форм не возвращает false
Вообщем, есть вот такая функция:
<script language="JavaScript" type = "text/javascript">
function checkfields()
{

var message="Заполните следующие формы";
var check=1;
if(document.getElementsByName("add_name_ru").value=="")
{
	message+="\nНазвание (RU)";
	check=0;
}
if(document.getElementsByName("add_name_uk").value=="")
{
	message+="\nНазвание (UK)";
	check=0;
}
if(document.getElementsByName("add_name_us").value=="")
{
	message+="\nНазвание (US)";
	check=0;
}
if(document.getElementById("add_anot_ru").value=="")
{
	message+="\nОписание (RU)";
	check=0;
}
if(document.getElementsByName("add_anot_uk").value=="")
{
	message+="\nОписание (UK)";
	check=0;
}
if(document.getElementsByName("add_anot_us").value=="")
{
	message+="\nОписание (US)";
	check=0;
}
if(document.getElementsByName("add_body_ru").value=="")
{
	message+="\nНовость (RU)";
	check=0;
	return false;
}
if(document.getElementsByName("add_body_uk").value=="")
{
	message+="\nНовость (RU)";
	check=0;
}
if(document.getElementsByName("add_body_us").value=="")
{
	message+="\nНовость (US)";
	check=0;
}
if(check==0)
{
	alert(message);
	return false;
}
else
	return true;
}
</script>

Проверяет каждую форму, формирует конечную ошибку и должна вывести конечную ошибку.

<form action="add.php" method="POST" enctype="multipart/form-data" onsubmit="checkfields()"> 
<table class="border_none">
	<tr>
		<td class="border_none">Название (RU)</td>
		<td class="border_none"><input type="text" name="add_name_ru" size="50"></td>
	</tr>
	<tr>
		<td class="border_none">Название (UK)</td>
		<td class="border_none"><input type="text" name="add_name_uk" size="50"></td>
	</tr>
	<tr>
		<td class="border_none">Название (US)</td>
		<td class="border_none"><input type="text" name="add_name_us" size="50"></td>
	</tr>
	<tr>
		<td class="border_none">Описание (RU)</td>
		<td class="border_none"><input type="text" name="add_anot_ru" size="50"></td>
	</tr>
	<tr>
		<td class="border_none">Описание (UK)</td>
		<td class="border_none"><input type="text" name="add_anot_us" size="50"></td>
	</tr>
	<tr>
		<td class="border_none">Описание (US)</td>
		<td class="border_none"><input type="text" name="add_anot_uk" size="50"></td>
	</tr>
	<tr>
		<td class="border_none">Новость (RU)</td>
		<td class="border_none"><textarea rows="10" cols="45" name="add_body_ru"></textarea></td>
	</tr>
	<tr>
		<td class="border_none">Новость (UK)</td>
		<td class="border_none"><textarea rows="10" cols="45" name="add_body_uk"></textarea></td>
	</tr>
	<tr>
		<td class="border_none">Новость (US)</td>
		<td class="border_none"><textarea rows="10" cols="45" name="add_body_us"></textarea></td>
	</tr>
	<tr>
		<td class="border_none">Выводить новость</td>
		<td class="border_none"><SELECT name="show_news">
		  <option value="yes">Да
		  <option value="no">Нет  
		  </SELECT></td>
	</tr>
	<tr>
		<td class="border_none">Выводить описание</td>
		<td class="border_none"><SELECT name="show_anot">
		  <option value="yes">Да
		  <option value="no">Нет  
		  </SELECT></td>
	</tr>
</table>
<center><input type="submit" name="addnews_button" value="Добавить"></center>


Но всё равно, форма срабатывает, пустые данные передаются.

В чём может быть проблема?
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2011, 00:31
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

подпишите то,что подчеркнуто

точнее, return в обработчик onsubmit
<form action="add.php" method="POST" enctype="multipart/form-data" onsubmit="*!*return*/!* checkfields()">
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2011, 00:49
Аватар для voodoo
Новичок на форуме
Отправить личное сообщение для voodoo Посмотреть профиль Найти все сообщения от voodoo
 
Регистрация: 26.06.2011
Сообщений: 3

раньше был дописан return, но всё равно не работало =)
По сути дела он там и не нужен
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2011, 00:53
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

ну тогда Firebug тебе в руки

пиши в начале функции debugger и следи за исполнением кода, нажимая на F10

обычный дебаг ) ничего страшного. я код на тайм-аут каруселях так дебажил.
Ответить с цитированием
  #5 (permalink)  
Старый 27.06.2011, 01:53
Аватар для voodoo
Новичок на форуме
Отправить личное сообщение для voodoo Посмотреть профиль Найти все сообщения от voodoo
 
Регистрация: 26.06.2011
Сообщений: 3

ReferenceError: emptyfield is not defined

переменную check заменил на emptyfield, на всякий пожарный, вдруг зарезервированное слово, но всё равно не работает. Странно, переменная объявлена, но её не видно %)

По этому и checkfields возвращает true.


-----
Народ, я понимаю что уже ночь и порой даже влом, но утром мне надо диплом сдавать, а эта функция и теория по javascript даёт хороший объём текста) помогите пожалуйста =)

Последний раз редактировалось voodoo, 27.06.2011 в 02:03.
Ответить с цитированием
  #6 (permalink)  
Старый 27.06.2011, 11:55
Аспирант
Отправить личное сообщение для ASerputko Посмотреть профиль Найти все сообщения от ASerputko
 
Регистрация: 20.10.2010
Сообщений: 73

<script language="JavaScript" type = "text/javascript">
function checkfields () {
	var message="Заполните следующие формы";
	var check=1;
	console.log(document.getElementsByName("add_name_ru")[0])
	if (document.getElementsByName("add_name_ru")[0].value=="") {
		message+="\nНазвание (RU)";
		check=0;
	}
	
	if (document.getElementsByName("add_name_uk")[0].value=="") {
		message+="\nНазвание (UK)";
		check=0;
	}
	
	if (document.getElementsByName("add_name_us")[0].value=="") {
		message+="\nНазвание (US)";
		check=0;
	}
	
	if (document.getElementsByName("add_anot_ru")[0].value=="") {
		message+="\nОписание (RU)";
		check=0;
	}
	
	if (document.getElementsByName("add_anot_uk")[0].value=="") {
		message+="\nОписание (UK)";
		check=0;
	}
	
	if (document.getElementsByName("add_anot_us")[0].value=="") {
		message+="\nОписание (US)";
		check=0;
	}
	
	if (document.getElementsByName("add_body_ru")[0].value=="") {
		message+="\nНовость (RU)";
		check=0;
	}
	
	if (document.getElementsByName("add_body_uk")[0].value=="") {
		message+="\nНовость (RU)";
		check=0;
	}

	if (document.getElementsByName("add_body_us")[0].value=="") {
		message+="\nНовость (US)";
		check=0;
	}
	
	if (check == 0) {
		alert(message);
		return false;
	} else {
		return true;
	}
}
</script>


после document.getElementsByName("...") забыли поставить [0]
+ тут идет поиск по Id, хотя стоит по Name
if(document.getElementById("add_anot_ru").value=="")
{
    message+="\nОписание (RU)";
    check=0;
}
Ответить с цитированием
  #7 (permalink)  
Старый 27.06.2011, 13:14
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

нет, там поиск по name
<input type="text" name="add_name_ru" size="50">


извините, нолик изза стены кода не заметил

вместо этой огромной функции можно написать это

document.forms[ 0 ].add_name_ru.value

вот вам живой тест

<form action="add.php" method="POST" enctype="multipart/form-data"> 

		<input type="text" name="add_name_ru" size="50" value="TEST-VALUE"> 
</form>
<script>
alert( document.forms[ 0 ].add_name_ru.value )
</script>



Сообщение от voodoo Посмотреть сообщение
По этому и checkfields возвращает true.
если говорить верно, то она ничего не возвращает возникает исключение, а потом всё идет своим чередом.. как без JS
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка форм: .ajax async tarya jQuery 2 05.05.2011 20:38
jQuery расширение отправки форм feg16 jQuery 1 11.01.2011 14:25
Функция проверки onDomReady. Не могу разобраться с кодом vandy3 Общие вопросы Javascript 6 08.11.2010 09:47
Странная ситуация. igsavenko Общие вопросы Javascript 5 23.02.2010 10:04
Функция не возвращает false, почему? Vitaly jQuery 3 05.07.2009 16:05