在提交时使用jQuery验证表单

在提交时使用jQuery验证表单,jquery,forms,validation,Jquery,Forms,Validation,当我点击我的提交按钮时,我有这个功能: $('#signup-button').click(function(event){ var username_check = validateUsernameField(); var email_check = validateEmailField(); var name_check = validateNameField(); var birthdate_c

当我点击我的提交按钮时,我有这个功能:

$('#signup-button').click(function(event){
            var username_check = validateUsernameField();
            var email_check = validateEmailField();
            var name_check = validateNameField();
            var birthdate_check = validateBirthdateField();
            event.preventDefault();
            if(username_check && email_check && name_check && birthdate_check) {
                alert('lol');
                var formData = $('#FonykerAddForm').serialize();
                $.ajax ({
                    type: 'POST',
                    url: '<?php echo $html->url('/fonykers/add',true); ?>',
                    data: formData,
                    dataType: 'json',
                    success: function(response) {
                        $( "#confirm-dialog" ).html(response.msg).dialog({
                            autoOpen: false,
                            modal: true,
                            height: 140,
                            title: response.title
                        });       
                        $('#confirm-dialog').dialog('open');
                    },
                    error: function (xhr, ajaxOptions, thrownError){
                        alert('Cualquier vaina');
                        alert(xhr.statusText);
                        alert(thrownError);
                    }
                });
            }
        });
$(“#注册按钮”)。单击(函数(事件){
var username_check=validateUsernameField();
var email_check=validateEmailField();
var name_check=validateNameField();
var birthdate_check=validateBithDateField();
event.preventDefault();
如果(用户名检查&电子邮件检查&姓名检查&生日检查){
警报(“lol”);
var formData=$('#FonykerAddForm').serialize();
$.ajax({
键入:“POST”,
url:“”,
数据:formData,
数据类型:“json”,
成功:功能(响应){
$(“#确认对话框”).html(response.msg).dialog({
自动打开:错误,
莫代尔:是的,
身高:140,
标题:response.title
});       
$('确认对话框')。对话框('打开');
},
错误:函数(xhr、ajaxOptions、thrownError){
警报(“Cualquier vaina”);
警报(xhr.statusText);
警报(thrownError);
}
});
}
});

我以前在我的字段上调用了blur事件的validate方法,它们都可以工作,这里的验证似乎可以工作,问题是if语句没有发生任何事情之后,表单就不会提交了。有人知道为什么吗?如果没有,您能想出一个更好的方法在提交之前验证我的所有字段吗?

我认为问题在于
事件.preventDefault()

如果您认为它阻止提交表单的默认操作将不起作用,那么,更好的选择是使用<代码>返回false;<代码>在您正在调用的每个函数中

e、 g


问题是我在if语句中使用的变量有些返回未定义的,所以它搞砸了调用。我只是简单地将检查变量替换为检查DOM元素上的集合类,以查看它们是否有错误,并且工作正常。

您是否尝试过在Firebug中设置断点并逐行检查。此外,您还可以尝试运行表单“提交”事件,例如$('form.my_form').submit(函数(){if($(this.find('input.my_input').val().length>20){return false;//return false防止表单提交}return true;//submit form});你是否检查过你的
是否为
?定义一个匹配的
else{alert(!lol”);}
看看是否显示了它是否输入了else,这很奇怪,因为所有字段都标记为有效(确定后变为绿色)在firebug中运行时,我看到它们都被标记为未定义,除了生日检查。如果我不阻止默认设置,它将执行默认的POST操作,并且不会执行AJAX调用。
function validateUsernameField(){

     if($("#UsernameField").val()=="") {
        // your username actions
        return false;
     }
     else
     {
     username_check = 1  
     return true;
     }
}

if(username_check == 1 && email_check == 1 && name_check == 1 && birthdate_check == 1) {
    alert('lol');

    var formData = $('#FonykerAddForm').serialize();
    $.ajax ({
        type: 'POST',
        data: formData,
        dataType: 'json',
        success: function(response) {
            $( "#confirm-dialog" ).html(response.msg).dialog({
                autoOpen: false,
                modal: true,
                height: 140,
                title: response.title
            });       
            $('#confirm-dialog').dialog('open');

        },
        error: function (xhr, ajaxOptions, thrownError){
            alert('Cualquier vaina');
            alert(xhr.statusText);
            alert(thrownError);
        }
    });

}else{
    alert ('There is something wrong');
    return false;
}