2011-11-25 100 views
2

基本上,我有一個表單和一個驗證函數,當表單被提交時執行。但是,我希望在驗證運行之前運行其他一些代碼。我試過這個:How to order events bound with jQuery,但它不起作用。如何在jQuery submit()執行之前運行代碼?

這是我有:

$('form').submit(function(){ 
    $('form').trigger('before-submit'); 

    if($(this).find('error').exists(event)) 
     event.preventDefault(); 
    }); 


    $('form').bind('before-submit', function(e) { 
    if($('#url').val=='http://') 
     $('#url').val(''); 
     alert('test'); 
    }); 
+0

爲什麼不*硬是*把呼叫「其他一些代碼「在你做驗證之前? – jli

+0

第一部分是在外部文件中,第二部分是使用PHP生成的。 –

+0

在驗證之前,您仍然可以調用函數,然後在其他地方定義該函數。 – jli

回答

9

你可以這樣做:

 
$(function() { 
    $('#formLogin').submit(function() { 
     alert("Something"); //do something else here 
     return true; 
    }); 
}); 

+2

這不是對這個問題的回答,也不以任何方式解決問題。 –

+1

@MartinJaneček此代碼在表單submit()執行之前運行,不是嗎..?我想這是笏OP想要...否則我想它不會被接受爲正確的答案..! –

+1

不,它沒有 - 在[這個小提琴]中模擬它(http://jsfiddle.net/envxddwa/) - 'Something'不會在'external(驗證)'之前出現。 評論此權利,因爲它被接受爲正確的答案,但它不能解決問題。 –

0

這個怎麼樣:

$('form').submit(function(){ 
    beforeSubmit(function(){ 
    // this function is the 'callback' function 
    if($(this).find('error').exists(event)) 
     event.preventDefault(); 
    }); 
}); 

function beforeSubmit(fn) { 
    if($('#url').val=='http://'){ 
    $('#url').val(''); 
    alert('test'); 
    } 
    // call the 'callback' function you gave as argument 
    fn(); 
} 
+0

嗨Sander,您的解決方案適合我。謝謝。 現在,怎樣才能實現成功/失敗/完整功能? –

相關問題