2013-05-27 40 views
0

我們有一個腳本,通過向表單添加事件偵聽器來跟蹤表單提交。問題是,一個客戶通過鏈接使用提交表單當通過內嵌JavaScript提交表單時使用提交事件監聽器?

<a href="javascript:document.formname.submit();">Submit</a> 

它忽略了事件偵聽器。這裏有一個JSFiddle來演示:http://jsfiddle.net/XhLkG/

正如你所看到的提交按鈕觸發警報,而提交鏈接只是提交表單並繞過事件偵聽器。

有沒有辦法仍然可以觸發事件偵聽器?

編輯:我們不能更改標記,因爲它在我們客戶的主頁上,他們嵌入了我們的腳本。對不起,如果我沒有說清楚。

回答

0

,而不是使用HREF試試這個

<form method="post" name="formname" class="form"> 
    <input type="text" name="hello"> 
    <a onclick="javascript:document.formname.submit();">Submit</a> 
    <input type="submit"> 
</form> 

刪除hrefonclick

+0

謝謝,但我已經在鏈路上沒有控制權。客戶將我們的腳本嵌入他們的主頁。 – user1767586

+2

hrefs不應該從錨上刪除,它會導致它們不能正常工作,它也會打破瀏覽器的默認樣式。使用href =「#」(它會帶你到頁面頂部)或href =「javascript:void(0)」(最佳選項) – Ted

0

取代它嘗試使用jQuery如下:

$("form").submit(function (e) { 
     e.preventDefault(); 

     alert('event'); 
}); 

參考here

2

您可以使用此:

var form = document.getElementsByClassName('form'); 
form[0].addEventListener("submit", function(e) { 

    e.preventDefault(); 

    alert('event'); 

}); 
form[0].childNodes[3].addEventListener("click", function(e) { 

    e.preventDefault(); 

    alert('event'); 

});