我正在用HTML创建一个表单,然后将输入字段作为表单对象传递给javascript。我希望我的程序在将对象传递给JS之后重置除了一个(name
)之外的所有输入字段,但看起来字段在传递给JS之前会被重置。
HTML
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
// Prevent form from submitting
function preventFormSubmit() {
var forms = document.querySelectorAll('form');
for (var i = 0; i < forms.length; i++) {
forms[i].addEventListener('submit', function(event) {
event.preventDefault();
});
}
}
window.addEventListener('load', preventFormSubmit);
function FormSubmit(formObject) {
google.script.run.withSuccessHandler(FormSuccess()).EnterData(formObject);
}
function FormSuccess() {
var resets = document.getElementsByClassName("reset");
for (var i = 0; i < resets.length; i++) {
resets[i].value = "";
}
google.script.run.ProgramSuccess();
}
</script>
</head>
<body>
<form id="entryForm" onsubmit="FormSubmit(this)">
Name:<br>
<input type="text" name="name">
<br>
Client Name:<br>
<input class = "reset" type="text" name="clientName">
<br>
Project Type:<br>
<input class = "reset" type="text" name="projectType">
<br>
Task:<br>
<input class = "reset" type="text" name="task">
<br>
Hours:<br>
<input class = "reset" type="number" name="hours" min="0">
<br><br>
<input type="submit" value="Submit">
<input type="reset">
</form>
</body>
</html>
的Javascript
function EnterData(fObject) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
sheet.activate();
var entries = [[fObject.name, fObject.clientName, fObject.projectType, fObject.task, fObject.hours]];
var range = sheet.getRange(sheet.getLastRow()+1, 2, 1, 5);
range.setValues(entries);
return;
}
function ProgramSuccess() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.toast("Program Run Complete");
}
我是否错误地使用了withSuccessHandler
?或者有没有不同的方法来完成我想要做的事情?
感谢任何和所有帮助。
答案 0 :(得分:1)
withSuccessHandler方法接受一个函数作为其回调参数。
https://developers.google.com/apps-script/guides/html/reference/run#withSuccessHandler(Function)
在您的代码withSuccessHandler(FormSuccess())
中将调用FormSuccess方法。 FormSuccess没有返回值,因此实际上您调用了withSuccessHandler(null)
。通过删除()
,您将传递对函数的引用,而不是调用该函数。 withSuccessHandler
将使用您给出的引用调用函数本身,添加您作为第一个参数调用的服务器端函数的返回值。