当涉及到GAS时,我是一个完全的菜鸟,但我想将一个表单传递给本地JS函数(以验证数据),然后调用Google函数(将其添加到电子表格中)。 问题是:我甚至无法从表单中获取值!
我的代码目前是这样的:
的index.html:
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css">
<div>
<form id="register" action="javascsript:void(0)" onsubmit="validateForm(this)">
Email: <input type="text" name="email" placeholder="someone@example.com" /><br/>
<p id="emailtext"></p><br/>
Smartschool URL: <input type="text" name="url" /><br/>
<p id="urltext"></p><br/>
<input type="submit" value="Submit" />
</form>
</div>
<?!= include('Javascript'); ?>
Javascript.html:
<script>
function validateForm(form) {
// THIS IS NEVER POPPING UP
alert(form.email);
return false;
}
</script>
GoogleCode.gs:
function doGet(e) {
return HtmlService.createTemplateFromFile('Page').evaluate();
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
}
答案 0 :(得分:2)
我在JavaScript中添加了console.log
语句,并查看了我的Google Chrome浏览器控制台中的日志,并显示表单对象已通过。
我添加了这一行:
console.log('form: ' + form);
到您的Javascript文件:
<script>
function validateForm(form) {
console.log('form: ' + form);
// THIS IS NEVER POPPING UP
alert(form.email);
return false;
}
</script>
浏览器控制台打印:
form: [domado object HTMLFormElement FORM]
因此,表单对象正在传递。您可以枚举Form对象中的所有属性,以查看其中的内容,并可以检索。
for (var thePropurtees in form) {
console.log('thePropurtees: ' + thePropurtees);
};
您将获得Form对象中所有内容的真实长列表,并且您会注意到电子邮件不在列表中。列表中的内容是元素属性,结果是表单对象中的另一个对象。 表单对象中有元素对象。
如果我枚举表单元素:
for (var thePropurtees in form.elements) {
console.log('thePropurtees: ' + thePropurtees);
};
我明白了:
thePropurtees:0
thePropurtees:1
thePropurtees:2
thePropurtees:项目
thePropurtees:电子邮件
thePropurtees:url
thePropurtees:namedItem
因此,您的email
数据必须位于子对象中。
我能够通过以下方式从电子邮件输入字段中获取值:
console.log('the email value: ' + form.elements.email.value);
在获取值之前,您需要访问三个级别的对象。
1)表格对象
2)元素对象
3)输入对象(电子邮件)
您的提醒必须如下:
alert(form.elements.email.value);