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'}"}

(我不知道为什么错误引用了 mooTools,因为我选择了 jQuery 1.7.1。)这是 jsFiddle:http: //jsfiddle.net/pv2TX/11/

我的代码有问题吗?我正在使用的选择器应该可以工作,并且我能够在其上调用其他 jQuery 事件,但我似乎无法将任何类型的单击处理程序绑定到它。

4

1 回答 1

3

submit在表单本身上触发,而不是在单击的按钮上触发。从文档:

当用户尝试提交表单时,提交事件被发送到元素。它只能附加到<form>元素上。

所以你只需要选择你的表格而不是button

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

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

于 2012-04-17T01:36:33.157 回答