3

私はこの基本的な機能を過去2時間機能させようとしてきましたが、そのうちの約30分は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'}"}

(jQuery 1.7.1を選択しているので、エラーがmooToolsを参照している理由がわかりません。)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 に答える