Проблемка с формой
Есть небольшая непонятка с обработкой данных из формы .. Простая ситтуация.
берем данные инпутов и делаем вот так 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 .. не пойму, может глаз замылился и я не вижу ошибки.. |
что выводит typeof adata[i] ?
|
nice_try выдает undefined.. почему не стринг
|
это должна быть ссылка на дом элемент, ведь ты пытаешь получить его value; string и undefined - не то, что тебе нужно
|
Вставлять в массив document.sale.bla1.value, document.sale.bla2.value ?? или в данном случае можно сделать красивее=короче ссылку на дом каким то образом ??
|
document.sale.adata[i].value заменить на document.sale[adata[i]].value С изменением стиля аналогично. К форме лучше обращаться через forms, или сделать нормальную ссылку, например, по id через getElementById. |
jsnb спасибо. работает.
Лучше обращаться наслучай если в дом появится элемент с таким же именем ? .. или есть вариант что с обращением к имени не будет работать во всех браузерах ? |
Цитата:
|
ок тогда что лучше из этих двху вариантов ?
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++;} или тут уже на усмотрение каждого и особой разницы нет ..? |
Цитата:
Вот это почитай: http://learn.javascript.ru/traversing-dom#формы Там есть описание возможных проблем при обращении напрямую. По хорошему к влементам формы надо обращаться через document.forms[form_name/index].elements[element_name/index] |
Часовой пояс GMT +3, время: 16:48. |