当前位置:  开发笔记 > 编程语言 > 正文

使用jQuery验证的ASP.Net MVC Ajax表单

如何解决《使用jQuery验证的ASP.NetMVCAjax表单》经验,为你挑选了1个好方法。

我有一个MVC视图,其中包含使用Ajax.BeginForm()辅助方法构建的表单,我正在尝试使用jQuery Validation插件验证用户输入.我得到插件以突出显示无效输入数据的输入,但尽管输入无效,表单也会发布到服务器.

如何停止此操作,并确保仅在表单验证时发布数据?

我的代码


表格:

leave a message <% using (Ajax.BeginForm("Post", new AjaxOptions { UpdateTargetId = "GBPostList", InsertionMode = InsertionMode.InsertBefore, OnSuccess = "getGbPostSuccess", OnFailure = "showFaliure" })) { %>

<%= Html.TextBox("Post.Header", null, new { @style = "width: 200px;", @class="text required" }) %>

<%= Html.TextArea("Post.Post", new { @style = "width: 230px; height: 120px;" }) %>


JavaScript验证:

$(document).ready(function() {
    // for highlight
    var elements = $("input[type!='submit'], textarea, select");
    elements.focus(function() {
        $(this).parents('p').addClass('highlight');
    });
    elements.blur(function() {
        $(this).parents('p').removeClass('highlight');
    });

    // for validation
    $("form").validate();   
});

编辑:由于我在回答中发布后续问题及其解决方案,这也是工作验证方法...

function ajaxValidate() {
    return $('form').validate({
    rules: {
        "Post.Header": { required: true },
        "Post.Post": { required: true, minlength: 3 }
    },
    messages: {
        "Post.Header": "Please enter a header",
        "Post.Post": {
            required: "Please enter a message",
            minlength: "Your message must be 3 characters long"
            }
        }
    }).form();
}

tvanfosson.. 32

尝试将一个OnBegin回调添加到AjaxOptions并从回调中返回$('form').validate().form()的值.看看来源,看来这应该有效.

function ajaxValidate() {
   return $('form').validate().form();
}

<% using (Ajax.BeginForm("Post", new AjaxOptions
       {
           UpdateTargetId = "GBPostList",
           InsertionMode = InsertionMode.InsertBefore,
           OnBegin = "ajaxValidate",
           OnSuccess = "getGbPostSuccess",
           OnFailure = "showFaliure"
       }))
       { %>

使用正确的回调名称更新EDIT.



1> tvanfosson..:

尝试将一个OnBegin回调添加到AjaxOptions并从回调中返回$('form').validate().form()的值.看看来源,看来这应该有效.

function ajaxValidate() {
   return $('form').validate().form();
}

<% using (Ajax.BeginForm("Post", new AjaxOptions
       {
           UpdateTargetId = "GBPostList",
           InsertionMode = InsertionMode.InsertBefore,
           OnBegin = "ajaxValidate",
           OnSuccess = "getGbPostSuccess",
           OnFailure = "showFaliure"
       }))
       { %>

使用正确的回调名称更新EDIT.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有