2013-10-31 69 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

相关问题