我一直试图让这个基本功能在最后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事件,但我似乎无法绑定任何类型的点击处理程序。
答案 0 :(得分:3)
submit
在表单本身上触发,而不是在单击的按钮上触发。来自文档:
当用户尝试时,提交事件将发送到元素 提交表格。它只能附加到
<form>
元素。
因此,您只需选择表单而不是button
:
$("#form_selector").submit(function (e) {
e.preventDefault();
});
更新了小提琴: http://jsfiddle.net/AvCCb/