2010-12-08 2 views
0

array.length продолжает выпускать 2007 массивы?Array [] form validation

хмм .. У меня есть таблица, которая имеет, конечно, 2 <tr> 1 для заголовка и 1 для значений из базы данных

мой стол имеет столбцы, называемые код и описание, где идентификаторами fCode[] и fDesc[] и каждый имеет элемент

У меня есть код, где я могу клонировать строку таблицы каждый раз, когда я нажимаю add. В каждой добавленной строке добавляются еще fCode[] и fDesc[].

2 rows = 2 fCode[], fDesc[]

В моей яваскрипта функции я это

function validate_pr_form(e) { 

    var fCode = document.forms[e].elements["fCode[]"]; 
    var fDesc = document.forms[e].elements["fDesc[]"]; 
    for (i = 0; i < fCode.length; i++){ 
     if (fCode[i].value == "") { 
      alert("Please choose product code"); 
      fCode[i].focus(); 
      return false; 
     } 
    } 
    for (i = 0; i < fDesc.length; i++){ 
     if (fDesc[i].value == "") { 
      alert("Please choose product description"); 
      fDesc[i].focus(); 
      return false; 
     } 
    } 
    e.submit(); 

} 

Всякий раз, когда я загрузить страницу и нажмите кнопку отправки, я всегда получаю 2007 массивы, но когда я добавить еще одну строку, поэтому она становится 2 строки теперь (2 fCode[] и 2 fDesc[]) Я получаю 2 массива, и они фокусируются в каждом индексе массива.

Моя проблема идет только с 1 строкой ...

Любая помощь очень ценится.

+0

Пожалуйста [не используйте подпись или слоганы] (HTTP : //stackoverflow.com/faq#signatures) в ваших сообщениях. – meagar 2010-12-08 05:12:48

ответ

0

Попробуйте это:

var fCode = document.forms[e].elements["fCode[]"]; 
if (typeof fCode.length != "number") 
    fCode = [fCode]; 
var fDesc = document.forms[e].elements["fDesc[]"]; 
if (typeof fDesc.length != "number") 
    fDesc = [fDesc]; 
1

спасибо за ответ, но я уже решил мою проблему, получив имя элемента, как это

fCode = document.getElementsByName("fCode[]"); 

for (var i = 0; i < fCode.length; i++){ 
     if (fCode[i].value == "") { 
      alert("Please choose 'Product Code'."); 
      fCode[i].focus(); 
      return false; 
     } 
    }