如何在jQuery submit()执行之前运行代码?

问题描述:

基本上,我有一个表单和一个验证函数,当表单被提交时执行。但是,我希望在验证运行之前运行其他一些代码。我试过这个: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

你可以这样做:

 
$(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(验证)'之前出现。 评论此权利,因为它被接受为正确的答案,但它不能解决问题。 –

这个怎么样:

$('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,您的解决方案适合我。谢谢。 现在,怎样才能实现成功/失败/完整功能? –