我在HTML中創建一個表單,然後將輸入字段作爲表單對象傳遞給javascript。我希望我的程序在將對象傳遞給JS之後重置除了一個(name
)之外的所有輸入字段,但是它們在傳遞給JS之前似乎已重置。HTML傳遞給javascript和重置表單域的輸入
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
不正確?或者有什麼不同的方式來完成我想要做的事情?
任何和所有的幫助表示讚賞。
'withSuccessHandler(FormSuccess)'刪除'()'。處理程序正在尋找對該函數的引用。 –
@SpencerEaston謝謝你,完美的工作。但是你能解釋一下爲什麼嗎?我假設你需要'()'來指定你正在運行一個函數,而不僅僅是傳遞某種類型的變量。 –