2011-05-15 64 views
3

我想獲得所有輸入文本框,電臺組,複選框等我無法獲得選定的無線電和複選框的值,我無法弄清楚。獲取所有輸入的div爲阿賈克斯請求

我可以得到文本框,但似乎無法在正確的位置得到「選定」。目前它只是獲得收音機/複選框的第一個值而不是所選值。

$('#form_1 input').each(function(key)    
    formData += '&'+$('#'+this.id).attr('name')+'='+$('#'+this.id).val(); 
}); 

感謝

EDITED

$('#form_1 input').each(function(key, value) {    
    if ((this.type === "radio" || this.type === "checkbox") && this.checked === true) { 
     val = this.value; 
    } else { 
     val = this.value; 
    } 

    alert($('#'+this.id).attr('name') + ' = ' + val); 
    formData += '&'+$('#'+this.id).attr('name')+'='+val;  
}); 

好了現在我得到了收音機等的每一個值,所以我更近了一步。只需要現在就得到所選無線電的值。

感謝

回答

2
var val; 
if (this.type === "radio" || this.type === "checkbox") { 
    val = this.checked; 
} else { 
    val = this.value; 
} 

對於收音機和複選框你關心檢查的屬性。

更新

你寫

(this.type === "radio" || (this.type === "checkbox" && this.checked === true))

你的意思

((this.type === "radio" || this.type === "checkbox") && this.checked === true)

你需要在正確的地方的括號內。

此外編輯

邏輯有點破碎。

基本上你想要什麼。

if ((this.type === "radio" || this.type === "checkbox") && this.checked === false) { 
    return; 
} 

這意味着如果它的一個非檢查無線電/複選框,你什麼都不做。

+0

@Raynos - 感謝您的幫助。無線電值對我有價值,所以我如何獲得選定的值? – Jon 2011-05-15 02:01:40

+0

@Jon你可以調用'.checked'來查看它們是否被選中。然後調用'.value'來獲取選中項目的值。 – Raynos 2011-05-15 02:02:58

+0

@Raynos - 我已編輯它,但是有點新奇,所以不知道在哪裏編輯。我已經編輯了我原來的帖子,現在我擁有了所有的值,而不是隻有選定的收音機。非常感謝。 – Jon 2011-05-15 02:13:04

0

這並不直接回答你的問題,但它看起來像你想實現的東西,是已經上市 - 你可能想看看serialize() - 使用它作爲var formData = $('#form_1').serialize()

3

只需使用serialize()[docs]方法。

它將照顧爲您獲取所選元素的值。

var formData = $('#form_1').serialize(); 

從文檔:

的.serialize()方法可作用已選定的個別形式的元件,如,一個jQuery對象上,和。然而,通常更容易選擇標籤本身的序列化:

$('form').submit(function() { 
    alert($(this).serialize()); 
    return false; 
}); 

這將產生一個標準的前瞻性查詢字符串:

a=1&b=2&c=3&d=4&e=5 
+0

'.serialize'實際上是優越的。哦,順便說一句,你的2個月假期如何?) – Raynos 2011-05-15 01:47:07

+0

@Raynos:效率更高! :o)雖然不能離開。你的代表太高了。 ; o) – user113716 2011-05-15 01:49:12

+0

@patrickdw你爲什麼回來! SO是一種令人上癮的詛咒;) – Raynos 2011-05-15 01:49:52