jQuery和jsFiddle,无法让PreventDefault()在$ .submit()上工作

时间:2012-04-17 01:35:29

标签: javascript jquery jsfiddle

我一直试图让这个基本功能在最后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事件,但我似乎无法绑定任何类型的点击处理程序。

1 个答案:

答案 0 :(得分:3)

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

  

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

因此,您只需选择表单而不是button

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

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