2012-04-17 103 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