2017-07-14 105 views
-2

我有一個比較基本的形式(使用POST方法),當用戶點擊一個鏈接(在表單之外)時我想提交。我在表單中也有一個提交按鈕,它完美地工作,所以它本身不是問題。

基本上,我有什麼是(簡化,顯然):

HTML

<form method="post" id="searchForm" action="[absolute https URL]"> 
<!-- (some text fields, checkboxes, select elms, hidden fields, a submit button) --> 
</form> 

<a href="#" class="close">Confirm</a> 

JS

} else if ($(e.target).is('a.close')) { 
    // do some stuff (<- this works) 
    // ... 
    // then submit form 
    $('#searchForm').submit(); // <- no effect 
    // $('#searchForm').trigger('submit'); // also no effect 
    // document.forms['searchForm'].submit(); // still nothing 

    console.log($('#searchForm')); // <- this works 
} 

我的問題是:.submit();行似乎沒有做任何事情。表單未提交(頁面甚至沒有重新加載),並且瀏覽器控制檯中也沒有出現錯誤。我知道代碼在點擊鏈接時觸發,因爲其中的console.log(它也確認找到了表單元素(長度爲1))。

頁面上沒有其他任何形式,也沒有其他ID爲「searchForm」的元素。據我所知,沒有事件處理程序綁定到表單元素。

我錯過了什麼?我應該檢查什麼?

+0

雖然我們鼓勵您提出問題並回答您自己的問題,但請務必先搜索以確保它不是重複的。 –

+0

沒錯。對於那個很抱歉。 – s427

回答

1

好的,我發現是什麼導致了這個問題!

我提交按鈕有以下HTML代碼:

<button type="submit" name="submit" id="submit"><span>Search</span></button> 

原來,submit是一種保留字,不應該被用作name屬性(也作爲id,實際上)。

這是阻止表單被提交的原因。

當我更改這兩個該按鈕的ID和名稱屬性後,我的腳本就像一個魅力工作。