2013-10-31 108 views
1

我有一個窗體(使用HtmlService),有一些複選框。當它被提交時,它應該通過電子郵件發送內容。一切工作與免除複選框的值。只發送第一個複選框值。我究竟做錯了什麼?我在下面添加了一個示例代碼。任何幫助表示讚賞。如何讀取所有複選框值?

<form name=「some-form」 action="<?= appUrl ?>" method="post」> 
<input type=「hidden」 name=「form_name」 value=「send_form」> 
<label>Your Name</label> 
<input type=「text」 name=「name」> 
<label>Your Email</label> 
<input type=「text」 name=「email」> 
<label>Favorite Colors</label> 
<input type=「checkbox」 name=「favorite_colors」 value=「blue」>Blue<br/> 
<input type=「checkbox」 name=「favorite_colors」 value=「red」>Red<br/> 
<input type=「checkbox」 name=「favorite_colors」 value=「yellow」>Yellow<br/> 
<input type=「checkbox」 name=「favorite_colors」 value=「green」>Green<br/> 

<input type=「submit」 value=「Send Form」> 

</form> 



// post function 

function doPost(e) 
{ 

    var evaluated = undefined; 

    //check if right form and call send function 
    if(e.parameter.form_name == 「send_form」) 
    { 

     evaluated = sendForm(e) 

    } 

    return evaluated; 

} 


// send function 

function sendForm(e) 
{ 

    // data from form 
    var name = e.parameter.name; 
    var email = e.parameter.email; 
    var favorite_colors = e.parameter.favorite_colors; 


    // create and send message 
    var to = 「[email protected]」; 
    var subject = 「New form response」; 
    var body = 「A new form was completed」 + 
      「Name: 「 + name + 
      「Email: 「 + email + 
        「Favorite Colors: 「 + email; 


    MailApp.SendEmail(to, subject, body); 

} 

回答

0

如果你使用這樣的不同變種的名稱:

... 
<label>Favorite Colors</label><br> 
<input type='checkbox' name='favorite_colors1' value='blue'>Blue<br/> 
<input type='checkbox' name='favorite_colors2' value='red'>Red<br/> 
<input type='checkbox' name='favorite_colors3' value='yellow'>Yellow<br/> 
<input type='checkbox' name='favorite_colors4' value='green'>Green<br/> 
... 

,並在代碼:

function sendForm(e){ 
    var name = e.parameter.name; 
    var email = e.parameter.email; 
    var favorite_colors1 = e.parameter.favorite_colors1; 
    var favorite_colors2 = e.parameter.favorite_colors2; 
    var favorite_colors3 = e.parameter.favorite_colors3; 
    var favorite_colors4 = e.parameter.favorite_colors4; 
    var dest = '[email protected]'; 
    var subject = 'New form response'; 
    var body = 'A new form was completed \n' + 
    'Name: ' + name + 
     '\nEmail: ' + email + 
     '\nFavorite Colors: \n' + favorite_colors1 
     +'\n'+favorite_colors2 
     +'\n'+favorite_colors3 
     +'\n'+favorite_colors4 
    MailApp.sendEmail(dest, subject, body); 
} 

你'd得到所有的checkBoxes結果。

test with all 4 checked : 
    A new form was completed 
    Name: name test 
    Email: @@@@@ 
    Favorite Colors: 
    blue 
    red 
    yellow 
    green 
+0

謝謝你的建議。我可能最終會走這條路。我認爲有一種方法可以有一個「羣體checkebox」選項。你的方法應該可以工作。再次感謝。 – Atilio

0

我相信您輸入的值都設置爲同一件事:

<input type=「checkbox」 name=「favorite_colors」 value=「blue」>Blue<br/> 
<input type=「checkbox」 name=「favorite_colors」 value=「blue」>Red<br/> 

應該返回藍,藍。

儘量將它們設置爲你希望得到的結果一致:

<input type=「checkbox」 name=「favorite_colors」 value=「blue」>Blue<br/> 
<input type=「checkbox」 name=「favorite_colors」 value=「red」>Red<br/> 
+0

感謝gardni的幫助。我發佈的示例代碼不準確(現在已更新)。實際的代碼具有正確的值。如果選中多個複選框,我仍然只能返回一個值。它似乎是挑選了第一個被檢查過的。這就像e.parameter.favorite_colors只存儲第一個選中的複選框。 – Atilio

+0

在這種情況下,您將需要有單獨的輸入: '藍色
'或通過它們循環 – gardni

+0

當我檢索它們時,來自e.parameter.favorite_colors?還是必須在完成這篇文章時循環遍歷它們,然後再檢索數據。再次感謝您的幫助。 – Atilio

相關問題