Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка на пустое поле (https://javascript.ru/forum/misc/53786-proverka-na-pustoe-pole.html)

azazello95 18.02.2015 09:09

Проверка на пустое поле
 
Ребята подскажите, что я не так делаю:

function checkForm(form)
{
	
  if (document.getElementById("empt").value == '')
{
  alert ('Заполните все поля');
  return false;
}
}


<form method="post" onsubmit="return checkForm(this)" action="/" >
<input type="text" id="empt" name="test">
<input type="submit" value="Отправить">
</form>

laimas 18.02.2015 09:19

А что у вас не так? 'Заполните все поля' - то есть поле не одно будет и не знаете как проверить все?

Если вы передаете в функцию ссылку на форму, то зачем document.getElementById("empt")? Ну так используйте переданное - if (form.empt.value == '').

PS. Если речь о проверке на пустоту, то и только пробел/пробелы, это собственно "пусто", и проверка на '' не даст желаемого.

azazello95 18.02.2015 10:33

Решил следующим образом:
function Formdata(data){
if (data.yearconst != null && data.yearconst.value.length == 0 )
{
alert('Заполните поле "Ваше имя"');
return false;}
}

<input type="text" name="yearconst">
<input type="submit" onClick="return Formdata(this.form)" value="Send">

Одна проблема- можно отключить. Надо решить. Или сделать на стороне сервера. Только не знаю как

laimas 18.02.2015 11:16

Не верное решение:

s = '  ' //я ввел в поле просто пробелы
alert(s != null && s.length == 0 ? 0 : 1)//и ваша проверка не сработает


null тут вообще не при делах.

Если строка действительно пуста, то достаточно проверки на ''. Но если строка это одни пробелы? То есть перед проверкой нужно удалить крайние пробелы:

для новых браузеров можно воспользоваться методом .trim(), но нужно учитывать и не столь древние браузеры, которыми еще пользуются, значит рег. выражения:

s = ' ';
s = s.replace(/^\s+|\s+$/g, '')
if(!s) alert('Пусто') //такого условия достаточно, ибо при пустой строке будет возвращено false


Считайте так - проверка на стороне клиента, это сервис для него, а проверка на стороне сервера, это ваша святая обязанность.

azazello95 18.02.2015 11:41

laimas,
Благодарю, так конечно на много лучше

azazello95 18.02.2015 14:16

Есть маленький вопрос с этим кодом:
function checkForm(form)
{
  s = ' ';
  s = s.replace(/^\s+|\s+$/g, '')
  for (var i = 0; i < form.elements.length; i++)
  if (form.elements[i].value == s)
{
  form.elements[i].value.style.border='1px solid red';
  alert ('Заполните все поля');
  return false;
}
}


--- Не выполняется выделение поля input
По какой причине? ((

laimas 18.02.2015 14:36

А мой пример один в один зачем в функции? Свойство style не принадлежит value.

function checkForm(form) {
    var e = 0;
    for (var i = 0; i < form.length-1; i++) {
        if (!form[i].value.replace(/^\s+|\s+$/g, '')){
            form[i].style.border='1px solid red';
            e = 1;
        }
    }
    if(e) {
        alert ('Заполните все поля');
        return false;
    }
}
</script>

<form onsubmit="return checkForm(this.elements)">
<input /> <input value="1" /> <input />
<input type="submit" value="GO" />
</form>

рони 18.02.2015 15:05

Цитата:

Сообщение от azazello95
form.elements[i].value.style.border

одно из слов лишнее -- какое именно?

azazello95 18.02.2015 19:32

Боже боже, надо учиь javascript
Спасибо всем, все работает!


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