2012-02-16 14 views
0

JaveryサイトをJquery Mobileサイトにアップグレードしようとしています。私は私の検証ルーチンを実行し、ajaxフォームの提出を開始するために、フォーム提出を禁止する必要があります。フォーム送信時にイベントオブジェクトとフォームデータ(メソッド...)にアクセスする方法

HTML

<form name="LoginForm" id="LoginForm" action="some.html" method="post"> 
    ... 
    <input type="submit" onClick="routine('true')" /> 
</form> 

のjQuery:

私はこれを持って

function rountine(isit){ 
    if(isit == "true"){ 
     document.LoginForm.action = "some.html"; 
     } 
    console("rountine triggered"); 

    $("#LoginForm").submit(function(event, data){ 
     console.log("submission triggered"); 
     console.log(event); 
     console.log(data); 
     event.preventDefault(); 
     }); 
}; 

質問:私は最初のコンソールメッセージが出てい 。フォームは送信されませんが、コンソールには何も表示されません。私は間違って何をしていますか?また、アクションを再指定する必要がありますか、またはHTML部分で省略して、私のルーティング関数内から動的に設定することはできますか?

helPをお寄せいただきありがとうございます。

答えて

0

あなたのライン:

$("#LoginForm").submit(function(event, data){ 

は、フォームの提出のためのイベントハンドラを設定したのは... http://api.jquery.com/submit/

はこのようにそれを実行してください参照してください。

<form name="LoginForm" id="LoginForm" action="some.html" method="post"> 
    ... 
    <input type="submit"/> 
</form> 

$(document).ready(function() { 
    $("#LoginForm").submit(function(event){ 
    // actions you want to perform on the form submitting 
    if(isit == "true"){ 
     document.LoginForm.action = "some.html"; 
    } 
    console("rountine triggered"); 
    console.log("submission triggered"); 
    console.log(event); // event is an object - dont expect much in the console 
    event.preventDefault(); 
    }); 
}); 

この意志のセットアップサブミットリスナーと関数内のコードはサブミット時に実行されます - event.preventDefault();はフォームの送信を妨げます。

+0

いいですね。どのように私は "true"の値をonClick = "routine( 'true')"という式に入れることができますか? – frequent

+1

隠しテキストフィールドを使用して値を格納し、 '$( '#idofhiddenfield')を使用して値を取得します。 – ManseUK

0

何をしているのかは、イベントにハンドラを追加して実行していないことです。 このハンドラを追加すると、他のすべてのコンソールメッセージも表示されるはずです。

$("#LoginForm").submit(function() { 
    .. // This will get executed when submit is pressed 
}); 

提出するイベントを呼び出すために、提出するイベントが発生しており、引数なしで$("#LoginForm").submit()を呼び出します。

関連する問題