Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как запретить submit при пустом текстовом поле? (https://javascript.ru/forum/events/1829-kak-zapretit-submit-pri-pustom-tekstovom-pole.html)

Bad Request 23.09.2008 00:01

Как запретить submit при пустом текстовом поле?
 
Здравствуйте!
Есть простой код для проверки для формы.

<FORM method="POST" action="pochta.php">
<P>Ваше имя:<br>
  <INPUT type="text" name="name" size=30/>
</p>
<p>Ваша почта:<br/>
  <input type="text" name="from"/>
</p>
<P>Тема<br>
  <INPUT type="text" name="subject" size=30/>
</p>
<P>Сообщение:<br>
  <textarea name="msg" id="msg" cols=30 rows=5></textarea>
</p>
<INPUT type="submit" id="sbm" value="Отправить" onclick="empty_form()"/>
</FORM>

Вот скрипт проверки:
function empty_form ()
{
	var txt = document.getElementById('msg').value;
	if(txt == '')
	{
		alert('Вы забыли ввести текст.');
	}	
}

Все работает, только после окна предупреждения о том, что не введен текст, отправка все равно происходит. Как это исправить?

Андрей Параничев 23.09.2008 00:44

<FORM method="POST"  onsubmit="return empty_form()" action="pochta.php">
<P>Ваше имя:<br>
  <INPUT type="text" name="name" size=30/>
</p>
<p>Ваша почта:<br/>
  <input type="text" name="from"/>
</p>
<P>Тема<br>
  <INPUT type="text" name="subject" size=30/>
</p>
<P>Сообщение:<br>
  <textarea name="msg" id="msg" cols=30 rows=5></textarea>
</p>
<INPUT type="submit" id="sbm" value="Отправить"/>
</FORM>


function empty_form ()
{
    var txt = document.getElementById('msg').value;
    if(txt == '')
    {
        alert('Вы забыли ввести текст.');
        return false;
    }    
    return true;
}

Bad Request 23.09.2008 09:45

Благодарю, Андрей!
Заработало! :)

Viper 05.10.2008 02:50

а какая структура будет у if если нужно проверить значение 2 полей ?

Bad Request 05.10.2008 12:20

Тебе нужно обязательно с if? Можно и по-другому проверить значение всех полей в форме, сколько бы их ни было.
function checkForm(form)
{
  for (var i = 0; i < form.elements.length; i++)
  if (form.elements[i].value == '')
{
  alert ('Заполните все поля');
  return false;
}
}

форма:
<FORM method="post" action="pochta.php" onsubmit="return checkForm(this)">

Ваше имя:<br>
<INPUT type="text"/>
<br/>

Ваша почта:<br/>
	<input type="text"/>
<br/>
Тема<br>
<INPUT type="text"/>
<br/>
Сообщение:<br>
<textarea cols=30 rows=5></textarea>
<br/>
<INPUT type="submit" value="Отправить"/> &nbsp;<input type="reset" value="Очистить">

</FORM>

Viper 05.10.2008 15:40

та не. у меня просто textarea и 1 input. остальное вынес в $.ajax

проверил так
Код:

if (txt == \'\' || captcha == \'\') {...
за код спсб. дальше пригодится :)


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