2012-04-17 102 views
3

我一直在試圖讓這個基本函數在最後2個小時內工作,大約有1/2小時在jsFiddle上。我不知道爲什麼,但我無法獲得preventDefault()在表單提交按鈕上工作。

這裏的HTML:

<form action="" method="post"> 
    <input type="text" name="search-query" value="" id="search-query"> 
    <input type="submit" value="Search" name="submit" id="search-submit"> 
</form>​ 

和這裏的JS:

$('#search-submit').submit(function(e) { 
    e.preventDefault(); 
    alert("hello"); 
});​ 

當我嘗試在自己的代碼,就好像preventDefault()方法是不存在的形式被提交。當我嘗試它的jsfiddle,我得到這個錯誤信息:

{"error": "Shell form does not validate{'html_initial_name': 
u'initial-js_lib', 'form': <mooshell.forms.ShellForm object 
at 0x9139fcc>, 'html_name': 'js_lib', 'label': u'Js lib', 'field': 
<django.forms.models.ModelChoiceField object at 0x91392cc>, 
'help_text': '', 'name': 'js_lib'}"} 

(我不知道爲什麼錯誤referencin g mooTools,因爲我選擇了jQuery 1.7.1。)這裏是jsFiddle: http://jsfiddle.net/pv2TX/11/

我的代碼有什麼問題嗎?我正在使用的選擇器應該可以工作,並且我可以調用其他jQuery事件,但我似乎無法將任何類型的點擊處理程序綁定到它。

回答

3

submit在窗體本身上觸發,而不是在單擊的按鈕上觸發。從文檔:

當用戶試圖提交表單時,提交事件發送到一個元素。它只能附加到<form>元素。

所以你只需要選擇您的形式,而不是button

$("#form_selector").submit(function (e) { 
    e.preventDefault(); 
}); 

更新小提琴:http://jsfiddle.net/AvCCb/

+0

*** ***捂臉它從來沒有甚至想到要檢查關於這方面的文件。我查看了文檔中的其他一些內容,但未發現我的問題。謝謝!! – 2012-04-17 01:41:03

+0

@TimMackey:沒問題!有時你需要的是另一雙眼睛:)'' – 2012-04-17 01:41:38