Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2014, 10:11
Аспирант
Отправить личное сообщение для andrey888 Посмотреть профиль Найти все сообщения от andrey888
 
Регистрация: 15.11.2011
Сообщений: 85

Проблемка с формой
Есть небольшая непонятка с обработкой данных из формы .. Простая ситтуация.
берем данные инпутов и делаем вот так
function Form_Check(){
if(document.sale.bla1.value==''){document.sale.bla1.style.background='#e1757a' ;alert('пропущено поле');return false;}
if(document.sale.bla2.value==''){document.sale.bla2.style.background='#e1757a' ;alert('пропущено поле');return false;}
if(document.sale.bla3.value==''){document.sale.bla3.style.background='#e1757a' ;alert('пропущено поле');return false;}
return true;
}

вот так по деревянному все работает отлично, возвращает false если одно из полей незаполнено, но если делаю красивее
function Form_Check(){
var err=0;
var adata = new Array('bla1','bla2','bla3');

for (var i=0;i < adata.length;i++){
 if(document.sale.adata[i].value==''){document.sale.adata[i].style.background='#e1757a'; err++;} 	
 }
if(err > 0){alert('Вы что-то пропустили. Укажите всю необходимую информацию'); return false;}else{return true;}
}

то возвращает true .. не пойму, может глаз замылился и я не вижу ошибки..
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2014, 10:27
Аватар для nice_try
Профессор
Отправить личное сообщение для nice_try Посмотреть профиль Найти все сообщения от nice_try
 
Регистрация: 11.12.2013
Сообщений: 313

что выводит typeof adata[i] ?
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2014, 10:38
Аспирант
Отправить личное сообщение для andrey888 Посмотреть профиль Найти все сообщения от andrey888
 
Регистрация: 15.11.2011
Сообщений: 85

nice_try выдает undefined.. почему не стринг
Ответить с цитированием
  #4 (permalink)  
Старый 08.04.2014, 10:43
Аватар для nice_try
Профессор
Отправить личное сообщение для nice_try Посмотреть профиль Найти все сообщения от nice_try
 
Регистрация: 11.12.2013
Сообщений: 313

это должна быть ссылка на дом элемент, ведь ты пытаешь получить его value; string и undefined - не то, что тебе нужно
Ответить с цитированием
  #5 (permalink)  
Старый 08.04.2014, 10:51
Аспирант
Отправить личное сообщение для andrey888 Посмотреть профиль Найти все сообщения от andrey888
 
Регистрация: 15.11.2011
Сообщений: 85

Вставлять в массив document.sale.bla1.value, document.sale.bla2.value ?? или в данном случае можно сделать красивее=короче ссылку на дом каким то образом ??
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2014, 11:21
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

document.sale.adata[i].value

заменить на
document.sale[adata[i]].value

С изменением стиля аналогично. К форме лучше обращаться через forms, или сделать нормальную ссылку, например, по id через getElementById.

Последний раз редактировалось jsnb, 08.04.2014 в 11:28.
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2014, 11:43
Аспирант
Отправить личное сообщение для andrey888 Посмотреть профиль Найти все сообщения от andrey888
 
Регистрация: 15.11.2011
Сообщений: 85

jsnb спасибо. работает.
Лучше обращаться наслучай если в дом появится элемент с таким же именем ? .. или есть вариант что с обращением к имени не будет работать во всех браузерах ?
Ответить с цитированием
  #8 (permalink)  
Старый 08.04.2014, 12:06
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от andrey888 Посмотреть сообщение
jsnbЛучше обращаться наслучай если в дом появится элемент с таким же именем ? .. или есть вариант что с обращением к имени не будет работать во всех браузерах ?
Не знаю как там с кроссбраузерностью, т.к. никогда в голову не приходило использовать name для идентификации элементов. name нужен для элементов формы, это его предназначение. Он не обязан быть уникальным в пределах документа, в отличии от id. Да и читабельность кода получается фиговая. В общем, это то еще извращение. Есть id, есть классы, а name оставь для элементов формы.
Ответить с цитированием
  #9 (permalink)  
Старый 08.04.2014, 12:24
Аспирант
Отправить личное сообщение для andrey888 Посмотреть профиль Найти все сообщения от andrey888
 
Регистрация: 15.11.2011
Сообщений: 85

ок тогда что лучше из этих двху вариантов ?
if(document.forms['sale'][adata[i]].value==''){document.forms['sale'][adata[i]].style.background='#e1757a'; err++;}

или 

var aform=document.getElementById('sale_form');
 if(aform[adata[i]].value==''){aform[adata[i]].style.background='#e1757a'; err++;}

или тут уже на усмотрение каждого и особой разницы нет ..?
Ответить с цитированием
  #10 (permalink)  
Старый 08.04.2014, 12:30
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от andrey888 Посмотреть сообщение
или тут уже на усмотрение каждого и особой разницы нет ..?
Тут особой разницы нет. В варианте с forms главное чтобы name форм был уникален на странице.
Вот это почитай: http://learn.javascript.ru/traversing-dom#формы
Там есть описание возможных проблем при обращении напрямую. По хорошему к влементам формы надо обращаться через document.forms[form_name/index].elements[element_name/index]

Последний раз редактировалось jsnb, 08.04.2014 в 12:34.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемка с бордером элемента TH demoniqus (X)HTML/CSS 2 09.10.2013 12:15
Проблемка с селектом middle jQuery 10 25.08.2013 15:56
Как можно динамически создать <object> с формой mgukov Events/DOM/Window 3 25.03.2011 12:22
Сделать модальное окно с формой housewm Работа 9 21.12.2010 15:00
Динамический JavaScript проблемка... andrys2007 Events/DOM/Window 3 06.12.2009 12:40