【问题标题】:Can't Submit Form With Simple Validation with the JQuery Form Plugin无法通过 JQuery 表单插件的简单验证提交表单
【发布时间】:2010-10-07 07:11:23
【问题描述】:

我正在使用 jQuery 表单插件来提交 AJAX 请求。我正在尝试在提交之前进行一些简单的验证(确保填写了字段)。我没有尝试在提交之前运行任何 AJAX 验证。在我将 beforeSubmit 添加到 ajaxform() 方法的选项之前,表单将提交并且我的控制器代码将运行良好。一旦我添加了带有验证函数名称的 beforeSubmit 选项,无论我从 validate 方法返回 false、true 还是什么都没有,表单都不会提交。这是我设置表单的初始代码:

$(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;
    }

}

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

【问题讨论】:

    标签: javascript jquery asp.net-mvc ajax


    【解决方案1】:

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

    EDIT 看起来 beforeSubmit 函数需要三个参数 (API),第二个是表单。我已经更新了我的示例以反映这一点。查看您的代码后,您似乎并没有使用它——所以它也已更新。我不确定到底发生了什么,因为它似乎应该工作。您是否确认您的验证函数中没有任何 javascript 错误?

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

    【讨论】:

    • 试过这个:我得到了相同的结果。 validate() 函数被调用,返回 true,但表单从不提交。
    • 我已经更新了我的答案。看起来您也可以更改您的验证函数以获取三个参数。不过,我不确定为什么它不起作用。你检查过 javascript 错误吗?
    • 我尝试添加这些参数,但仍然得到相同的结果。我可以单步执行javascript代码而没有错误,直到我确定它不会返回错误为止。然后函数完成,但帖子永远不会发生,并且不会调用成功回调
    • 知道了。在使用选项并使用数据对象进行验证之后,它起作用了。不过,我不确定它为什么会失败,因为如果表单经过验证,它仍然会返回 true。感谢您的提示!
    猜你喜欢
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多