2014-02-06 20 views
0

我使用三元運算符來檢查表單中的哪些複選框已被選中。如果選擇了一個值,我將名稱 - 值對加上一個查詢字符串,然後在AJAX調用中傳遞該查詢字符串。如果沒有,我附上一個空字符串值的名字。在AJAX調用中傳遞多個複選框值

它工作正常,我只是想知道是否有一個更緊湊/優雅的方式來做到這一點,因爲它似乎有點冗長。我想知道是否可以使用for循環。我不確定這是否會起作用的原因是它會涉及基於索引在循環內動態分配變量名稱。

var fields = $('input[name="apn"]').serializeArray(); 
    var apn1 = fields[0] ? fields[0]["value"] : '' 
    query += '&apn1=' + apn1; 
    var apn2 = fields[1] ? fields[1]["value"] : '' 
    query += '&apn2=' + apn2; 
    var apn3 = fields[2] ? fields[2]["value"] : '' 
    query += '&apn3=' + apn3; 
    var apn4 = fields[3] ? fields[3]["value"] : '' 
    query += '&apn4=' + apn4; 
    var apn5 = fields[4] ? fields[4]["value"] : '' 
    query += '&apn5=' + apn5; 
    ... 
+1

更多的思考它,它似乎有意義,只是通過一個數組,而不是... –

+1

你試過['var query = $ .param(fields);'](http://api.jquery。 COM/jQuery.param /)? –

回答

0

地圖的價值和指數以對象的數組,而只是通過直接到$阿賈克斯,jQuery將使用$ .PARAM它給你:

var fields = $.map($('input[name="apn"]'), function(el, i) { 
    var o = {}; 
    o['apn' + i] = el.value; 
    return o; 
}); 
0

如果它只是複選框:

$('input[name="apn"]').each(function (i, el) { 
    if($(el).is(':checked')) { 
     query += '&apn'+i+'=' + el.value; 
    } 
}); 
0

你可以簡單的序列化形式:

var query = $("#FormId").serialize();