我正在使用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;
}
}
如果没有遇到任何错误,我已尝试不返回任何内容,但我得到的结果相同。我能够进入验证代码并查看函数返回的内容,并且始终如预期的那样。我在这里错过了什么吗?
答案 0 :(得分:2)
我认为beforeSubmit没有将表单传递给validate函数。尝试在匿名函数中包装validate并提供正确的表单参数。
编辑看起来,beforeSubmit函数有三个参数(API),其中第二个是表单。我已经更新了我的例子以反映这一点。看了你的代码之后,你似乎还没有使用它 - 所以这也已经更新了。我不确定它到底发生了什么,因为它似乎应该正常工作。您确认在验证功能中没有出现任何javascript错误吗?
beforeSubmit: function(data,form,options) {
return validate();
}