2011-12-23 44 views
3

我希望能夠在facebook中提交表單之前加密文本框中的文本。我嘗試了使用beforeSerialize或beforeSubmit的ajaxFORM插件,但加密不會發生。在加密函數後面的代碼中被替換爲警報用於調試目的。當我運行腳本時,警報正好出現,而不是當我按下facebook上的提交按鈕時。另外,當我按下提交按鈕時,它要求刷新頁面,我不想要這個。在提交表單之前更改數據

var s = document.createElement('script'); 
s.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js'); 
document.body.appendChild(s); 


var f = document.createElement('script'); 
f.setAttribute('src', 'http://malsup.github.com/jquery.form.js'); 
document.body.appendChild(f); 

var c = document.createElement('script'); 
c.setAttribute('src', 'http://malsup.github.com/chili-1.7.pack.js'); 
document.body.appendChild(c); 



s.onload=function(){ 


$(document).ready(function() { 
    // bind form using ajaxForm 
    $(document.activeElement).closest("form").ajaxForm({ 
    beforeSerialize:   alert($(document.activeElement).val()) }); 
}); 


}; 

回答

2

您可以控制通過調用提交按鈕點擊事件提交前發生了什麼:

$("#submit_button").click(function(event) { 
    event.preventDefault(); 

    alert("Encrypting..."); 
}); 

您也可以刪除event.preventDefault();如果你想按鈕像通常那樣後採取行動已處理您的點擊事件。如果你想要觸發自己提交的事件,我建議使用event.preventDefault();

注:

我知道有在執行不同的事件(點擊,變化等)的順序的差異;例如同一複選框上的更改和點擊事件會導致Firefox中的(單擊,然後更改),或者(在Chrome中進行更改,然後單擊)。如果按鈕上的點擊和提交事件也是如此,那麼我建議使用preventDefault,以便您可以在表單準備好提交時觸發提交。這樣,它可以在任何瀏覽器工作

+0

我不知道id或提交按鈕的名稱,所以我不能使用$(#submit_button)。也在Facebook上只有第一個文本框有一個提交button.All其他文本框通過點擊「輸入」提交。感謝您的幫助。 – vkefallinos 2011-12-23 13:47:40

+0

那麼有沒有辦法可以繞過上述問題? – vkefallinos 2011-12-23 14:55:27

+0

如果它們是通過回車提交的,那麼仍然會附加一個'submit'處理程序,而不是按鈕:)因此.submit()仍然會觸發事件。 (請記住,您需要像觸發$(「#id_of_form或.class_of_forms」)。submit();此外,您可以通過在DOM中挖掘找到該按鈕:$(「body> div> form>輸入[type = submit]「)(不是100%確定的語法,請檢查Google,但這是基本的想法,也可以挖掘:$(」#id_of_element_inside「)。 - ) – Flater 2011-12-27 08:43:20

相關問題