2012-02-02 89 views
0
var fields = ['firstName', 'lastName', 'address', 'postCode', 'email', 'phone', 'dob']; 
    for (var i=0; i<fields.length; i++) { 
      if (!$('#'+fields[i]).val()) { 
       alert('The ' + getFieldTitle(fields[i]) + ' field is required.'); 


       return false; 
      } 
      values.fields[i] = $('#'+fields[i]).val(); 
      console.log($('#'+fields[i]).val() , values , fields[i]); 
     } 

值被定義爲腳本開始處的全局變量。看來,在爲陣列位置分配正確名稱的第一次迭代中,我得到了失敗。我記錄字段名稱,他們似乎顯示正確,但他們沒有正確分配給數組值?TypeError:無法設置未定義的屬性'0'

編輯:左明領域的初始化首先,比較遺憾的是

+0

如何在初次'fields'陣列? – Omid 2012-02-02 17:05:37

+0

'values'是否使用「fields」屬性初始化?如果不是,那就是你的問題。 – Pointy 2012-02-02 17:06:38

+0

字段是一個jQuery數組嗎? – Paul 2012-02-02 17:11:49

回答

2

如果你想包含ID和值的對象:

// set values equal to an empty object 
var values={}; 
var fields = ['firstName', 'lastName', 'address', 'postCode', 'email', 'phone', 'dob']; 
for (var i=0; i<fields.length; i++) { 
     if (!$('#'+fields[i]).val()) { 
      alert('The ' + getFieldTitle(fields[i]) + ' field is required.'); 
      return false; 
     } 
// Here's the only line you need to change 
     values[fields[i]] = $('#'+fields[i]).val(); 
     console.log($('#'+fields[i]).val() , values , fields[i]); 
    } 
+0

這是我想要的解決方案。謝謝。 – Xenology 2012-02-02 17:29:00

+0

非常歡迎您! – 2012-02-02 17:41:14

1
(values.fields || (values.fields = []))[i] = $('#'+fields[i]).val(); 
+0

我不想要的價值。字段。我希望最終的結果是沿着values.firstName,values.lastName等等的東西。 – Xenology 2012-02-02 17:21:49

0

試試這個:

var values = {}, 
    i = 0, 
    l = fields.length; 
for (i; i < l; i++) { 
    var itemId = fields[i], 
     item = document.getElementById(itemId), 
     itemValue = item.value;  
    if (!itemValue) { 
     alert('The ' + getFieldTitle(item) + ' field is required.'); 
     return false; 
    } 
    values[itemId] = itemValue; 
} 

沒有必要在這裏使用jQuery。您的解決方案將是更快的JavaScript只是

+0

我不想要價值。字段。我希望最終的結果是沿着values.firstName,values.lastName等行的東西。 – Xenology 2012-02-02 17:22:32

+0

嘗試上述解決方案 – Paul 2012-02-02 17:39:49

相關問題