首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证前MVC3 Ajax.BeginForm挂钩提交事件

验证前MVC3 Ajax.BeginForm挂钩提交事件
EN

Stack Overflow用户
提问于 2012-10-09 13:28:05
回答 1查看 3.7K关注 0票数 0

我使用的是一个不显着的验证的Ajax.BeginForm。我想给用户一个选项,用最少的验证字段(可能为零)保存数据,但允许在空时保存一些必需的字段。

我想我的要求是:

  • 将事件处理程序添加到“提交”按钮
  • 手动执行验证。
  • 标识哪些字段由于为空而失败验证
  • 标识哪些字段验证失败,数据出现错误

我可以通过在“文档就绪”中添加以下内容来捕获submit事件并验证表单

代码语言:javascript
复制
$(document).ready(function () {

    $('#submit-11').click(function () {
        if (!$("#form0").valid()) {
            alert("woops");
            return false;
        }
        return true;
    });

我现在的问题是如何识别哪些字段验证失败以及失败的原因。

我在谷歌上什么也找不到(尽管这可能是我搜索技巧的一部分,而不是问题所在)。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-09 14:19:52

你试过吗

event.preventDefault();

在提交后单击?http://api.jquery.com/event.preventDefault/

关于你更大的问题。我认为您可以使用jquery完成所有这些操作,下面是一个示例

代码语言:javascript
复制
$(document).ready(function () {
    //form validation rules, including custom rules you'd like
    $("#form").validate({
        rules: {
            fieldOne: { required: true },
            fieldTwo: { required: function () { /*custom validation*/return true; } }
        },
        messages: {
            fieldOne: { required: "error" },
            fieldTwo: { required: "error" }
        }
    });
    //handle submit click
    $("#btnSubmit").click(function (event) {
        event.preventDefault(); //stops form from submitting immediately 
        if ($("#form").valid()) { //perform validation 
            //submit your data if valid
            $.post("/your/action", $form.serialize(), function (data) { 
                //do something with the result
            });
        }
    });

});

UPDATE:所以当您将验证处理程序添加到可以实现submitHandler和invalidHandler的表单中时,也许应该这样做。现在你真正应该看到的是invalidHandler

代码语言:javascript
复制
        $(document).ready(function(){
            $("#form").validate({
                rules : {
                    field : {required : true}                   
                },
                messages : {
                    field : {required : ""}                 
                },
                submitHandler: function(form) {                     
                    form.submit(); //if all is good
                }, 
                invalidHandler: function(form, validator){
                    console.log(validator.errorList); //if something went wrong
                }
            });

此函数接收验证器,而验证器的errorList则包含所有失败的字段(和消息)。例如,用chrome的开发工具测试这段代码,您将看到errorList中的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12801156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档