функция проверки форм не возвращает 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> Но всё равно, форма срабатывает, пустые данные передаются. В чём может быть проблема? Заранее спасибо. |
подпишите то,что подчеркнуто
точнее, return в обработчик onsubmit <form action="add.php" method="POST" enctype="multipart/form-data" onsubmit="*!*return*/!* checkfields()"> |
раньше был дописан return, но всё равно не работало =)
По сути дела он там и не нужен |
ну тогда Firebug тебе в руки
пиши в начале функции debugger и следи за исполнением кода, нажимая на F10 обычный дебаг ) ничего страшного. я код на тайм-аут каруселях так дебажил. |
ReferenceError: emptyfield is not defined
переменную check заменил на emptyfield, на всякий пожарный, вдруг зарезервированное слово, но всё равно не работает. Странно, переменная объявлена, но её не видно %) По этому и checkfields возвращает true. ----- Народ, я понимаю что уже ночь и порой даже влом, но утром мне надо диплом сдавать, а эта функция и теория по javascript даёт хороший объём текста) помогите пожалуйста =) |
<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; } |
нет, там поиск по 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> Цитата:
|
Часовой пояс GMT +3, время: 11:02. |