1

私は頭がおかしくなり、ajax経由でフォームを送信するときにページが更新されないようにする方法がわかりません。

私はあなたが見るためにjsfiddleをセットアップしました:このリンク

私は event.prefentDefault() を実行し、false を返しました。しかし、それを機能させることができないようです。私は愚かなだけですか?

最終結果は、フォームが送信されると、フォーム領域が消えて、「電話を確認してください」という単純な「非表示」の ajax_message に置き換えられるはずです。

私のヘアラインを保存してくれてありがとう:)

4

7 に答える 7

1

関数は「submit_numberドキュメント準備完了」イベント ハンドラー内で定義され、その関数 (スコープ) とその子の内部でのみ表示されるため、グローバル スコープのみが使用可能な HTML からは使用できません。

firebug または同様のものがアクティブ化されている場合は、エラー コンソールにそれが表示されます。

それを機能させるための簡単なハックは、置き換えることです

function submit_number(event) {

window.submit_number = function(event) {

したがって、関数を明示的にグローバル スコープに配置しますが、これは推奨される方法ではありません。単一目的関数でグローバル スコープを汚染しても意味がありません。

より良いアプローチは、関数を JS のイベント ハンドラーとして次のように登録することです。

$('form.kinkast_signup').submit(submit_number);

また、そのフォームに ID を追加して、クラス名ではなく ID で参照することもできます。

于 2011-08-04T11:22:28.623 に答える
0

私はあなたのフィドルを修正しました:

http://jsfiddle.net/ntJux/5/

次のように、目立たないようにイベント ハンドラーを割り当てました。

$('#idOfTheForm').submit(function(event){
    ...
});
于 2011-08-04T11:27:39.813 に答える
0

フォームで「onclick」を使用する代わりに、JavaScript にバインドします。

だから、代わりに

function submit_number(event)

行う

$(form).submit(function(event)
于 2011-08-04T11:22:41.017 に答える
0
<form method="post" class="kinkast_signup" onsubmit="submit_number(); return false">
<input id="login_email" type="text" name="to" />
<input id="signInButtonSubmit" type="submit" name="action" value="Send" />
</form> 

その後

    window.submit_number=function() {
           //Prevent Default page refresh on submit
            //event.preventDefault();

......
}

preventDefault() は削除できます。

于 2011-08-04T11:23:41.420 に答える
0

onclick イベントが発生したときに呼び出される関数は、単純に false を返す必要があります。

于 2011-08-04T11:26:21.327 に答える
0

これを試してくださいhttp://jsfiddle.net/ntJux/6/

于 2011-08-04T11:26:38.927 に答える