2012-09-11 81 views
0

我創建了一個表單,我想用jquery將標籤和用戶輸入的輸入值存儲到數組中。在表單的底部,有一個下一個按鈕,而不是提交。當用戶按下時,他們應該看到所有標籤及其輸入的摘要。的HTML是這樣的:從表單存儲用戶輸入並顯示彙總

<div class="form-item"> 
    <label>Zip Code:</label> 
    <input type="text" /> 
</div> 

<div class="form-item"> 
    <label>Address:</label> 
    <input type="text" /> 
</div> 

我相信去了解這一點的最好辦法是循環thorugh每個div.form-item使用each()像這樣:

$(".form-item").each(function(){ 
    var label = $(this).find('label').text(); 
    var input = $(this).find('input').val(); 
}); 

林不知道如何去收集多塊使用唯一變量的表單項目。我希望這是完全動態的,所以無論有多少表單域,它都可以工作。我是否將它們存儲在一個數組中?什麼是最好的方式去做這件事?

+2

它應該是'$(」。形式項目「)。每個...' – samura

+0

哎呀,謝謝! – JCHASE11

回答

0

您可以使用map方法,也請注意您的類選擇器不正確,您錯過了.

var arr = $('.form-item').map(function() { 
       var lab = $('label', this).text(); 
       var val = $('input', this).val(); 
       return lab + val; 
      }).get() 

http://jsfiddle.net/b5Z6C/2/

+0

在正常的數組/推送中使用映射有什麼優勢? – JCHASE11

+0

@ JCHASE11'map'也使用'push'方法,這只是一種創建數組的jQuery方法。 – undefined

+0

謝謝,如何顯示var arr? – JCHASE11

0

你可以將其存儲在一個數組,如:

var els = new Array(); 
$(".form-item").each(function(){ 
    els.push({ 
    label: $(this).find('label').text(), 
    value: $(this).find('input').val()}); 
}); 

稍後在代碼中,你可以這樣做:

for(var i in els){ 
    $('.where-you-want-it') 
    .append('<p>'+els[i].label+'</p><span>'+els[i].value+'</span>'); 
} 
+0

我該如何以如下格式顯示數組:

標籤

? – JCHASE11