Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка ввода в форму (https://javascript.ru/forum/misc/1827-proverka-vvoda-v-formu.html)

greatilya 22.09.2008 19:28

Проверка ввода в форму
 
Понимаю что вопрос ламерский...
Есть форма:
<form id="form1" name="form1" method="post" action="index.php">
	<input type="text" name="text1" />
	<input type="submit" name="Submit" value="Submit" />
</form>

Нужно сделать так, чтобы нажав на кнопку, проверялось значение поля и по окончании проверки, при положительном исходе происходила отправка. Вся сложность (для меня) заключается проблеме с "enter"ом. При нажатии его в поле ввода форма отправляется. как правильно привязать функцию проверки?

Dmitry A. Soshnikov 22.09.2008 22:13

greatilya, обрабатывать событие onsubmit (для формы) или onclick для кнопки submit; в обоих вариантах, в случае, если проверка не пройдет - возвращать false.

greatilya 23.09.2008 04:34

правильно я Вас понял?
<script>
function proverka()
{
if(document.getElementById("text1").value=="1111") return true; else return false;
}
</script>
<form id="form1" name="form1" method="post" action="index.php" onsubmit="proverka()">
    <input type="text" name="text1" id="text1" value="" />
    <input type="submit" name="Submit" value="Submit" />
</form>

Если да, тогда, вроде, не работает.... Форма отправляется без проверок...

Snipe 23.09.2008 11:56

надо onsubmit="return proverka()"

Dmitry A. Soshnikov 23.09.2008 12:10

Цитата:

Сообщение от greatilya
правильно я Вас понял?

да, только, конечно в onsubmit, как уже отметил Snipe, нужен return (и конкретно false, чтобы форма не отправилась - этот false вернет (или не вернет) как раз функция proverka())

Только вот в самой функции proverka() else не нужен - поскольку есть вероятность return'a на первом этапе (true), то до второго return'a (false) мы и так не дойдем:

if (document.getElementById("text1").value == "1111") {
  return true;
}
return false;

Snipe 23.09.2008 12:58

тогда уж
return (document.getElementById("text1").value == "1111");

SunnyDay 23.09.2008 13:03

Но лучше всётаки проверять сервером, иначе хакнут... А лучше всего и тем, и тем)

greatilya 23.09.2008 13:04

огромное СПАСИБО! вот такая мелочь... Всем респект)

Dmitry A. Soshnikov 23.09.2008 14:11

Цитата:

Сообщение от Snipe
тогда уж

Действий может быть больше одного. Вообще, наиболее рациональный способ, мне кажется - отсеивание всех false'ов и в конце - return true; (т.е. если какое-то условие не прошло - сразу return false, и нечего дальше интерпретатору анализировать).


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