2009-02-12 92 views
0

我正在使用jQuery表单插件来提交AJAX请求。我正在尝试做一些简单的验证(确保字段已填写),然后再提交。我不想在提交之前运行任何AJAX验证。在我添加beforeSubmit之前添加ajaxform()方法的选项,表单将提交和我的控制器代码将运行良好。一旦我添加了带有验证函数名称的beforeSubmit选项,表单将不会提交,无论我从validate方法返回false,true还是nothing。这里是我的,设置了形式初始代码:无法使用JQuery表单插件简单验证来提交表单

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

} 

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

回答

2

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

编辑看起来像beforeSubmit函数有三个参数(API),其中第二个是形式。我已更新我的示例以反映这一点。看完你的代码后,看起来你并没有使用它 - 所以这也被更新了。我不确定到底发生了什么,因为它似乎应该起作用。你有没有确认你的验证功能没有得到任何javascript错误?

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

试过这个:我得到了同样的结果。 validate()函数被调用,返回true,但表单从不提交。 – 2009-02-12 21:45:40