无法使用JQuery表单插件通过简单验证提交表单

时间:2009-02-12 21:23:57

标签: javascript jquery asp.net-mvc ajax

我正在使用jQuery Form插件来提交AJAX请求。我想在提交之前做一些简单的验证(确保填写字段)。我不是在提交之前尝试运行任何AJAX验证。在我将beforeSubmit添加到ajaxform()方法的选项之前,表单将提交并且我的控制器代码可以正常运行。一旦我使用验证函数名称添加了beforeSubmit选项,表单将不会提交我是否从validate方法返回false,true或no。这是我设置表单的初始代码:

$(document).ready(function() {
var options = {
    beforeSubmit: function(data, form, options) { return validate(data, form, options); },
    url: '/PromoManagement/Images/AddImages?partial=true',
    success: updateImageList
};

    $('#frmAddImages').ajaxForm(options);
});

这是我的验证功能:

function validate(data, form, options) {
    var returnMessage = new Array();

    $('#txtImagePath,#txtImageCaption').removeClass('validationError-input');
    clearValidation();

    if ($('#txtImagePath').val().length == 0) {
        returnMessage.push('<li>Image Path is required</li>');
        $('#txtImagePath').addClass('validationError-input');
    }
    else { 
        if (!parseFileExtension($('#txtImagePath').val())) {
            returnMessage.push('<li>Please provide an image with an extension of .jpg, .gif, or .png</li>');
            $('#txtImagePath').addClass('validationError-input');    
        }    
    }

    if (returnMessage.length > 0) {
        $('.errorList').show();
    }

    if (returnMessage.length != 0) {
        buildValidationList(returnMessage);
        return false;
    }
    else {
        return true;
    }

}

如果没有遇到任何错误,我已尝试不返回任何内容,但我得到的结果相同。我能够进入验证代码并查看函数返回的内容,并且始终如预期的那样。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

我认为beforeSubmit没有将表单传递给validate函数。尝试在匿名函数中包装validate并提供正确的表单参数。

编辑看起来,beforeSubmit函数有三个参数(API),其中第二个是表单。我已经更新了我的例子以反映这一点。看了你的代码之后,你似乎还没有使用它 - 所以这也已经更新了。我不确定它到底发生了什么,因为它似乎应该正常工作。您确认在验证功能中没有出现任何javascript错误吗?

beforeSubmit: function(data,form,options) {
    return validate();
}