如何在mvc2中使用jQuery提交表单之前手动调用表单验证

时间:2011-07-19 05:16:47

标签: jquery validation asp.net-mvc-2 form-submit

我使用mvc 2,我的观点如下

<% using (Html.BeginForm("ApplyLeave", "ESS", FormMethod.Post, new { id = "formApplyLeave" }))
       { %>
    <fieldset>            
        <div>
            <div>
                <label for="FromDate">
                    From</label></div>
            <div>
                <%=Html.TextBoxFor(l => l.FromDate, new { id = "FromDate", name = "FromDate", maxlength = 10 })%>
            </div>
            <div>
                <%=Html.ValidationMessageFor(l => l.FromDate)%></div>
        </div>
        <div>
            <div>
                <label for="ToDate">
                    To</label></div>
            <div>
                <%=Html.TextBoxFor(l => l.ToDate, new { id = "ToDate", name = "ToDate", maxlength = 10 })%>
            </div>
            <div>
                <%=Html.ValidationMessageFor(l => l.ToDate)%></div>
        </div>            
    </fieldset>
    <% } %>

并且用于提交表单,我使用jquery作为

       $('#formApplyLeave').submit();

我在模型中的属性中写了验证。

在这里我可以提交表格,但验证不会被解雇。在提交表单之前,如何在jquery中触发验证。

请帮忙。

3 个答案:

答案 0 :(得分:1)

var form = $('#formApplyLeave');
var context = Sys.Mvc.FormContext.getValidationForForm(form.get(0));
if (context.validate().length < 1) {
    // The form passed client side validation => you may submit it
    form.submit();
}

答案 1 :(得分:0)

您可以使用beforeSubmit回调设置值:

使用jQuery验证插件的验证方法

试试这个〜

$(document).ready(function() {
    $("#form1").submit(function() {
        $("#txt1").val("123");

        $("#form1").validate({
            rules: {
                    txt1: {
                            maxlength: 3
                    }
            }
        });
    });
});

这种方式验证将由您的提交事件处理程序触发。

答案 2 :(得分:0)

ScottGu有一篇很好的文章描述了你的需求:

http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

你错过了一个电话和一些MS JS。