jquery:阻止默认的浏览器表单提交行为但是使用jquery提交表单?

时间:2011-02-22 17:34:13

标签: jquery forms submit form-submit

$('#search_form').submit(function(e) {
    //e.preventDefault();
    return false;
})

按Enter键可以防止表单提交。

然而即使我有这个,我想在某些情况确实的情况下用jquery提交表单。

编辑:

$('#search_form').submit(function(e) {
    return !!e.submit;
});

function ...

    if (e.keyCode == 13) {

        if (blablabla) {

            ... // do something

        } else {
            $('#search_form').submit({submit:true}); //doesn't work
            console.log('submitted'); //this does successfully get fired
        }

    }

如果我按回车键,则表单未提交,但控制台中的登录会发生!

2 个答案:

答案 0 :(得分:7)

$('#search_form').submit(function(e) {
   if($('.errors').is(':visible')){
        e.preventDefault();
        // do something else here// some errors are visible :)
        return false; 
   }else{

   }
})

答案 1 :(得分:5)

通过检查e.originalEvent的类型,我们可以确定人类(类型对象)或脚本(未定义类型)是否提交了表单:

$('#search_form').submit(function(e) {
    if (typeof e.originalEvent !== 'undefined') {
        e.preventDefault();
    }
})

调用jquery触发器以提交表单:

$('#search_form').trigger('submit');