当我的表单中有 onsubmit 事件时,为什么我的 HTML 表单不能正确地将用户输入发送到 Google 表格?

Why does my HTML form not send user input to Google Sheets properly when I have an onsubmit event in my form?

我目前正在制作费用跟踪器。带有用户输入的 HTML 表单将数据发送到 Google Sheet 并同时执行以下 addExpense() 函数;

function addExpense()
{



        clothingID={'id':Date.now(),'clothingType':clothingType.value, 'brand': brand.value, 'amnt':amnt.value, };
        clothingArray.push(clothingID);
        count1++;
        showTotalBalance();
        showDifference();
        expenseHistory();
        clothingType.value='';
        amnt.value='';
        brand.value = '';
        setItemInStorage();

    
   
}

没有 onsubmit 事件的 HTML 表单看起来像这样:

     <form method = "POST" action = 'https://script.google.com/macros/s/AKfycbwo9AKU8OB5YXs_l0w3wqKoZDYp6F5C3EuarHeQVILt4CK9zaIhmGQETz7StlOc2P/exec' >
              <div class="row">
                 <div  class="six columns">
                    <label>Clothing type</label>
        <input  name = "Type" id = 'type' style = "width: 50%;" type="text" placeholder="Enter the clothing type" id="exampleEmailInput">
                          </div>
                        </div>
                        <div>
                            <label>Amount</label>
           <input name = "Amount" id="amnt" style = "width: 24%;" type="number" placeholder="Enter number" id="exampleEmailInput">
                          </div>
                          <div>
                            <label style = 'padding-bottom: 1pt;' for="exampleEmailInput">Clothing brand</label>
                            <input name = "Store" id="brand" style = "width: 24%;" type="text" placeholder="Enter the clothing brand" id="exampleEmailInput">
                          </div>
                    
         <button type = 'submit' class="button-primary">Add expense</button>
                              
</form>

当我提交此表单时,数据被放入 Google Sheet 中没有问题,因此:

但是,我希望表单既执行 addExpense() 函数,又将数据发送到 Google Sheets。这是在提交表单时执行 addExpense() 函数时发生的情况:

这只有在表单元素如下所示时才能实现:

 <form  onsubmit='addExpense()'>

当我将 action 属性和 onsubmit 事件都放置到我的表单中时:

<form method="POST"  action ="https://script.google.com/macros/s/AKfycbwo9A2AKU8OB5YXs_l0w3wqKoZDYp6F5C3EuarHeQVILt4CK9zaIhmGQETz7StlOc2P/exec" onsubmit='addExpense()'>

我只得到 Google Sheet 中返回的日期(由 Date() 对象生成),但是 addExpense() 函数工作正常:

关于为什么会发生这种情况以及如何解决这个问题的任何想法?

这些行:

clothingType.value='';
amnt.value='';
brand.value = '';

clothingType、amnt 和 brand 是对相关输入元素的实时引用。将值设置为空字符串会产生以下效果:当您提交表单时,这些条目将为空白(因为您将它们设置为空白!)。

我认为您这样做的原因是为了在表单提交后将其清除。但是我认为您不需要,通常一旦您提交并重新加载表单,它就会自动清除。