2015-03-18 45 views
0

當我嘗試使用下面的代碼調用函數my this page時。我似乎只刷新頁面而不是調用腳本。HTML Onlcick事件僅適用於#錨標記

<form role="search" name="locationForm"> 
     <div class="form-group"> 
     <input id="locationInput" type="text" class="form-control" placeholder="Search"> 
     </div> 
     <button class="btn btn-primary btn-lg" type="submit" onclick="start();">Submit</button> 
    </form> 

如果我加上「#」到URL的末尾,重新加載頁面,則因爲它是假設的onlcick事件的作品。

據我所知這些是錨標籤,我不知道爲什麼他們將需要在調用的函數。

我該如何糾正?因爲我不想使用#。

回答

1

您正在使用button元素,該元素的默認行爲在單擊時提交其父窗體。 return false將停止提交形式:

<button class="btn btn-primary btn-lg" type="submit" onclick="start(); return false;">Submit</button> 
+0

這樣做,謝謝你。現在想想看,它是有意義的,是試圖發佈,而不僅僅是行動onclick事件。 – Yonkee 2015-03-18 21:19:42

1

如果你不想按鈕自動提交,你可以改變它的typebutton。然後,它所要做的就是運行它的onclick代碼。 (你仍然可以讓該代碼手動提交表單)

+0

也是一個有用的迴應。感謝那。 – Yonkee 2015-03-18 21:21:17

0

我想你想在提交表單時運行start()函數嗎? 你說你正在使用一個點擊事件監聽器。 嘗試傾聽提交事件,而不是。

$('#your_form_id').on('submit', function(e) { 
    e.preventDefault(); 
    your script... 
}); 

上面的代碼基本上是這樣做的。 此外,preventDefault保持實際提交自身的形式。 你可以訪問表單數據與

$('#your_form_id').serialize(); 

我希望這會使你進入正確的方向!