2012-02-16 26 views
0

我試圖將一個JavaScript網站升級到Jquery移動網站。我需要阻止默認的表單提交來運行我的驗證例程,並啓動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部分中忽略它,也可以在我的rountine函數內動態設置它?

謝謝你的幫助!

回答

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

聽起來不錯。任何想法如何我可以從onClick =「例程('真'')」真正的價值「到等式? – frequent 2012-02-16 12:55:03

+1

使用隱藏文本字段來存儲一個值,並使用'$('#idofhiddenfield')。val() – ManseUK 2012-02-16 13:10:29

0

你在做什麼是添加一個處理程序的事件,而不是執行它。 所以一旦你添加這個處理程序,你也應該看到所有其他的控制檯消息。

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

要調用提交事件,請調用$("#LoginForm").submit(),不帶任何參數,這會激發提交事件。