2010-07-19 157 views
1

好吧,我已經試圖讀這個,但我很難過。不幸的是,這是我沒有正確理解javascript的情況。jquery /驗證插件/對象文字:選擇多個複選框

在處理與jqueries驗證插件形式,您發送的變量使用文字符號的PHP郵件:

submitHandler: function() { 
    $.post("includes/mail-form.php", 
    { 
    age : $("#form-age-id").val(), 
    email : $("#form-email-id").val(), 
    name : $("#form-name-i").val(), 

我理解。變量年齡正在被分配元素的值。當我有多個複選框,雖然,我不能用:

$("input.checkboxes:checked').val() 

,因爲它只會選擇第一個匹配的元素,所以我需要使用類似的功能在多個複選框來遍歷到

var allVals = []; 
$('input.orthodontic-medical-form-disease:checked').each(function() { 
     allVals.push($(this).val()); 
     }); 
return allVals; 

我不明白的是我如何將返回值賦予文字。我試過

submitHandler: function() { 
    $.post("includes/mail-form.php", 
    { 
    age : $("#form-age-id").val(), 
    email : $("#form-email-id").val(), 
    name : $("#form-name-i").val(), 
     checkboxes : function(){ 
      var allVals = []; 
    $('input.orthodontic-medical-form-disease:checked').each(function() { 
     allVals.push($(this).val()); 
     });a 
      return allVals; 
     } 

但我想這是分配實際函數本身的變量,而不是返回的值。請有人幫助我嗎?

回答

0

試試這個:

checkboxes : $('input.orthodontic-medical-form-disease:checked').map(function() { 
       return $(this).val(); 
      }).get() // returns array of checked values 

另外,封裝你 '複選框價值越來越' 邏輯到一個名爲功能:

function getCheckedVals() { 
    var rv = $('input.orthodontic-medical-form-disease:checked').map(function() { 
       return $(this).val(); 
      }).get(); 
    return rv; 
} 

,只是把它叫做:

checkboxes: getCheckedVals() 
+0

這樣的作品,我只需要在最後附加toString()。所以: $('input.orthodontic-medical-form-disease:checked')。map(function(){return $(this).val();})。get()。toString(); 我覺得我誤解了對象字面佈局。由於缺乏嚴格的類型,我沒有意識到我正在將一個數組或函數對象傳遞給php,而不是像我應該那樣的字符串。謝謝! – 2010-07-20 00:30:13