2012-01-04 18 views
1

jQueryを使用してフォームを送信しないようにしたいのですが、ユーザーが送信したいときに関数を実行します。ここでjQueryがフォームの送信を妨げないようにする

は私のフォームマークアップです:

<form action="" method="post" id="msg-form"> 
    <p><textarea name="msg"></textarea><input type="submit" value="Send"></p> 
</form> 

そして、私のJavascriptコード:私は送信ボタンを押したときに

$('#msg-form').submit(function() { 
    return false; 
} 

しかし、フォームはまだ送信されると、ページが更新されます。フォームの送信を適切に防止するにはどうすればよいですか?

+3

最後に '' ')' ''がありません。あなたの実際のコードではそうではないと思いますか?また、あなたのサブミットコールバックに '' 'alert(" submit submit! ")' ''を置くと、コールされることはありますか? –

+0

申し訳ありませんが、投稿の書式設定で遊んでいたときに、私はそれを嫌っていました。実際のコードには構文エラーはありません。アラートでテストすると、アラートが表示されず、ページが更新されます。 –

+1

[適切な構文でうまく動作する](http://jsfiddle.net/869cX/)のため、おそらくこれ以上のコードをいくつか共有する必要があります。 –

答えて

0

$('#msg-form').submit(function(e){ e.preventDefault(); });

+2

'return false;はうまくいくはずです... – Robin

0

あなたは、ユーザーが実際の送信ボタンを与え、唯一の検証後にJSを使用して、フォーム送信することができませんでした:

HTMLを

<form action="" method="post" id="msg-form"> 
    <p><textarea name="msg"></textarea><input id="submit" type="button" value="Send"></p> 
</form> 

JS

$('#submit').on('click', function() { 
    // validate 
    $('#msg-form')[0].submit(); 
}); 
+0

これは実際の問題ではありません。 –

+0

彼のアプローチは解決策ではないかもしれませんが、私が働いているのと同じ問題に対する別のアプローチです。 –

+1

@anstosa:この特定のケースでは、おそらくどちらもうまくいきません。なぜ私が知っているか教えてください。 ''に 'ondomready'や' onload'のハンドラとして実行されるスクリプトを渡すことなく、ボタンが利用可能になる前にコードが実行されるので、 '#submit'は見つからないので取り出された。 – zizozu

0

試してみてください。

$("#msg-form").submit(function (e) { 
    e.preventDefault(); 
}); 
1

submitイベントが実際にフォーム要素にバインドされていません。 DOMをロードした後にバインドするのを忘れているかもしれません!

$(document).ready(function() {の内部にイベントバインディングを挿入するか、またはすべての要素がロードされた後にスクリプトをページの最後にロードします。この

<form action='' onsubmit="doSomeWork();return false;"> 
0

これは

<form action='' onsubmit="return false;"> 

に動作しますしたがって、私は、フォームが発見されていることができなかったと仮定し、イベントハンドラをしても実行されていないようです。 DOMの準備ができたらハンドラ内でコードを囲みます。 jQueryのでは、それは単にそのように行うことができます。

$(function(){ 
    $('#msg-form').submit(function(event) { 
     event.preventDefault(); 
     // code executed when user tries to submit the form 
    }); 
}); 

また、あなたは上記を参照できるように、あなたはそれが提出されているフォームのデフォルトの動作を防ぐことができます。

+1

これは非常に醜い解決策であり、大きなアプリケーションでは維持するのが難しいです。 – zizozu

関連する問題