Javascript.RU

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

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

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>
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2015, 09:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

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

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

Последний раз редактировалось laimas, 18.02.2015 в 09:27.
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2015, 10:33
Новичок на форуме
Отправить личное сообщение для azazello95 Посмотреть профиль Найти все сообщения от azazello95
 
Регистрация: 18.02.2015
Сообщений: 5

Решил следующим образом:
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">

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

Последний раз редактировалось azazello95, 18.02.2015 в 10:44.
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2015, 11:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

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


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

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

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

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


Считайте так - проверка на стороне клиента, это сервис для него, а проверка на стороне сервера, это ваша святая обязанность.
Ответить с цитированием
  #5 (permalink)  
Старый 18.02.2015, 11:41
Новичок на форуме
Отправить личное сообщение для azazello95 Посмотреть профиль Найти все сообщения от azazello95
 
Регистрация: 18.02.2015
Сообщений: 5

laimas,
Благодарю, так конечно на много лучше
Ответить с цитированием
  #6 (permalink)  
Старый 18.02.2015, 14:16
Новичок на форуме
Отправить личное сообщение для azazello95 Посмотреть профиль Найти все сообщения от azazello95
 
Регистрация: 18.02.2015
Сообщений: 5

Есть маленький вопрос с этим кодом:
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
По какой причине? ((
Ответить с цитированием
  #7 (permalink)  
Старый 18.02.2015, 14:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А мой пример один в один зачем в функции? Свойство 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>

Последний раз редактировалось laimas, 18.02.2015 в 14:47.
Ответить с цитированием
  #8 (permalink)  
Старый 18.02.2015, 15:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от azazello95
form.elements[i].value.style.border
одно из слов лишнее -- какое именно?
Ответить с цитированием
  #9 (permalink)  
Старый 18.02.2015, 19:32
Новичок на форуме
Отправить личное сообщение для azazello95 Посмотреть профиль Найти все сообщения от azazello95
 
Регистрация: 18.02.2015
Сообщений: 5

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка колличества строк в поле текстэреа imediasun1 Элементы интерфейса 3 01.03.2014 00:15
Проверка на наличии ссылки в поле, и ее обрезание RazZzeR Элементы интерфейса 17 09.08.2012 03:15
Проверка УРЛ в поле формы alex19rus Javascript под браузер 2 24.06.2011 11:33
Проверка наличия текста в поле формы Glook jQuery 6 16.07.2010 19:46
Проверка текста, вписанного в поле. ashurillia Общие вопросы Javascript 4 27.03.2010 13:24