2012-03-05 4 views
0

私はAJAXコール&をそこからリダイレクトするフォーム提出コードを持っています。Javascript:フォームの提出をキャンセルするにはどうすればいいですか?

しかし、何とかfalseを返すと、&フォームが送信されます。

戻り値falseを使用したくない場合は、&はすべてのケースで投稿をキャンセルする必要があります。そのためのjqueryメソッドはありますか? getlogin()の最後にreturn false;

function getLogin() 
{  
    //cancel form submission code here 


    $username = $('#username').val(); 
    $password = $('#password').val(); 
    console.log('Logging- '+$username+' - '+$password); 

    callAjaxService($username, $password); // redirects according to response from this method 
} 

HTML

<form action="" method="get" onSubmit="getLogin();"> 

実際のコードが入っているのjQueryモバイル&有する問題は、それがフォームを送信停止カント機能します - 。

+0

'return false;はあなたが望むものを達成する最も簡単な方法です。 ajax関数の呼び出しの後に置くだけです。すべてはまだうまく動作します。 – davin

+0

'event.preventDefault()'を使用することはできますが、なぜ 'return false'を返すことはありませんか? – nnnnnn

+0

getLogin()メソッドはどのように呼び出されていますか? –

答えて

0

アクションパラメータを正しく設定しないのはなぜですか?

action="javascript:;" 

BTW:さらに、アクションパラメータを$(window).load(..)に設定するとよいでしょう。 なぜですか? JSが非アクティブ化されているときにフォームを使用可能にするには、そうする必要があります。 getloginがフォームにバインドされていると仮定すると

2

ボタン/リンクを提出し、あなたはpreventDefault使用できるとstopPropagation

function getLogin(e) 
{  
    //cancel form submission code here 
    e.preventDefault(); 
    e.stopPropagation(); 
} 

onSubmit="getLogin();"

<form id="uniqueID" action="" method="get"> 

を取り除くと、次に使用ready

$(function(){ 
    $("#uniqueID").click(getLogin); 
}) 
+0

getLogin()を呼び出す方法。 paramとしてのイベントを伴うHTMLから? –

+0

どうやってそれを呼んでいますか? –

+0

Plzは私の編集を問題にしています - hvはHTMLを追加しました –

0

ハンドラi falseを返す、のいずれかのロジックproblem..orは、より可能性の高いコードの前にハンドラ内でスローされたエラーが戻り

に到達していないよハンドラ

http://api.jquery.com/event.preventDefault/

1

であなたの他のコードの前にevent.preventDefault()を使用してみてくださいgetLogin()はどのように呼び出されているのですか?そしてフォームを提出するボタン<input type="submit" onclick="getLogin()">がありますか?

<input type="submit" onclick="getLogin()" id="submit_btn"> 

JS:

もしそうなら、

HTML、クリックハンドラを追加し、以下のようにそこにコードを実装

$('#submit_btn').click (function (e) { 
    e.preventDefault(); //this should stop the form submission. 

    getLogin(); 
}); 
+0

getLogin(){}関数は多くのファイルから呼び出される一般的なjsスクリプトの中にありますが、この$( '#submit_btn' ).click(funct ...)をすべてのページのdocument.ready(){}に追加します。 getLogin()を修正したいだけです。 –

1

私は確かに知ってはいけませんこれがうまくいくならば、私は提出ハンドラをリギングしようとします:

$('#myform').submit(function(){ 
    var user = $('#username').val(); 
    var pw = $('#password').val(); 
    $.ajax(..., { success: function(data){ 
    if(data.condition)$('#myform').submit(); 
    else window.location = 'redirect.html'; 
    }); 
    return false; 
}); 

10秒のためのを読んだ後、私は、これは他の場所で述べたpreventDefaultと組み合わせることができ、気づい:

$('#myform').submit(ev, function(){ 
     ev.preventDefault(); 
    ... 

しかしreturn falseも同様に動作するはずです。

+0

getLogin(){}関数は共通のjsスクリプト内にあります。各ページの各document.ready(){}を変更したくありません。このスニペットを追加します。そのgetLogin(){}内のイベントをキャッチするか、HTMLからパラメータとしてイベントを送信する方法はありますか? –

+0

はい、イベントを 'getLogin(ev)'に渡したり、フォームのセレクタを一定の規則にしたりしてください。 '#username'要素から昇順でフォームを取得すると、' $( 'username')と思います。form(); '? – mindandmedia

+0

HTMLからevを渡すにはどうすればいいですか? onSubmit = "getLogin(!!);" ? –

0
function getLogin() 
{ 
    var e = window.event; 
    e.preventDefault(); 


    $username = ... 
    ... 

} 
関連する問題