Javascript Google应用程序脚本未接收多个复选框选择
我有一个接收表单数据的WebApp。部分数据来自复选框:Javascript Google应用程序脚本未接收多个复选框选择,javascript,jquery,forms,google-apps-script,Javascript,Jquery,Forms,Google Apps Script,我有一个接收表单数据的WebApp。部分数据来自复选框: <form id="intakeForm" class="labels-hidden-form custom-form" action="/new-patient-form/" enctype="multipart/form-data" novalidate="novalidate"> <input type
<form id="intakeForm" class="labels-hidden-form custom-form" action="/new-patient-form/"
enctype="multipart/form-data" novalidate="novalidate">
<input type="checkbox" name="intake_symptoms" value="coughing">Coughing<br>
<input type="checkbox" name="intake_symptoms" value="sneezing">Sneezing<br>
<input type="checkbox" name="intake_symptoms" value="vomiting">Vomiting<br>
当Iconsole.log
上面的函数创建的对象时,它显示预期的:
症状:(2)[“咳嗽”、“呕吐”]
但是,当我从GAS和控制台.log返回响应中的值时,它只显示第一个复选框
症状[]:“咳嗽”
这是我用来将提交的值发送回网页的代码
function doGet(e) {
var params = e.parameter
var result = {};
try {
result = {
status: start(params),
rawVals: params,
errs: errors
}
} catch (f) {
result.error = f.toString();
}
return ContentService
.createTextOutput(e.parameters.callback + '(' + JSON.stringify(result) + ')')
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}
我在这里不知所措。是否需要以其他方式将复选框值发送到脚本?问题:
e.parameter
仅返回第一个值
解决方案:
- 改用
e.参数
参考资料:
片段:
获取多个复选框
<script>
function getCheckedBoxes(chkboxName) {
var checkboxes = document.getElementsByName(chkboxName);
var rowsToArchive = [];
for (var i=0; i<checkboxes.length; i++)
{
if (checkboxes[i].checked)
{
rowsToArchive.push(Number(checkboxes[i].value));
}
}
google.script.run
.withSuccessHandler(setResponse)
.archiveSelectedRows(rowsToArchive);
}
</script>
函数GetCheckedBox(chkboxName){
var复选框=document.getElementsByName(chkboxName);
var rowsToArchive=[];
对于(var i=0;值得一提的是,e.parameters
将所有值作为对象
而不是字符串
(就像e.parameter
那样)即使只有一个值…比如说来自标准文本输入。因此,如果进行任何进一步的操作,必须将其转换为字符串。e.parameters.administration\u patient\u lname.toString().toUpperCase()
@Daveh0对象始终是一个数组,只要需要字符串,数组就会隐式转换为字符串。这是我所期望的,但正在尝试执行e.parameters.intrance\u patient\u lname.toString().toUpperCase()
产生了以下错误:TypeError:在对象Johnson中找不到函数toUpperCase
。调用toString()
可以消除错误。@Dave您应该使用e.parameters.intraction\u patient\u lname[0]。toUpperCase()
明白了。因此使用e.params
时访问值的方式确实需要与使用e.param
时不同。是的,引用第一个数组项(实际上是字符串
比转换数组更有意义。感谢您的指导。
var params = e.parameter
var params = e.parameters;//modified
<script>
function getCheckedBoxes(chkboxName) {
var checkboxes = document.getElementsByName(chkboxName);
var rowsToArchive = [];
for (var i=0; i<checkboxes.length; i++)
{
if (checkboxes[i].checked)
{
rowsToArchive.push(Number(checkboxes[i].value));
}
}
google.script.run
.withSuccessHandler(setResponse)
.archiveSelectedRows(rowsToArchive);
}
</script>