【问题标题】:Validate All the Form Fields after Submitting MVC Razor with jQuery使用 jQuery 提交 MVC Razor 后验证所有表单字段
【发布时间】:2013-12-02 00:55:44
【问题描述】:

我在我的 MVC 应用程序中使用 jquery 验证,在选择并离开输入后,它会自动验证。另一方面,如果用户没有选择输入,即使提交表单也不会被验证。因此,我想在按下 MVC Razor 页面上的提交按钮后验证所有相关字段。我该怎么做?

【问题讨论】:

  • 尝试使用jquery表单验证,看这个链接:stackoverflow.com/questions/15060292/…
  • @Lin:这不是我的问题的答案。实际上,我遵循了该页面 geektantra.com/2009/09/jquery-live-form-validation 上的示例,根据该页面,我所遵循的一切都是正确的。有什么错误吗?另一方面,我查看了您的演示,但在从输入移动并提交表单后,我需要进行验证,如示例 geektantra.com/2009/09/jquery-live-form-validation 所示。你能举一个像那个页面上包含隐藏字段的例子吗?提前致谢。
  • 嗨@H.Johnson,网上有很多例子。我建议您查看以下链接:github.com/borisyankov/DefinitelyTyped/blob/master/…jqueryvalidation.org/documentation。尝试一些示例,看看它们是否适合您。
  • 您遇到所有这些问题是因为the online example you're trying to follow 使用了 jQuery Validate 插件!对于使用 jQuery Validate 的实际工作代码示例,simply look at Stack Overflow.
  • @Lin:感谢您的帮助。抱歉,但我之前从未使用过这种验证插件,并且由于我使用了“jquery.validate.js”,所以我认为我使用了“jQuery 验证插件”。无论如何,我需要一个执行以下要求的示例: 1) 当然我想使用 jQuery Validation 插件。我希望在切换到另一个控件(实时验证)后验证字段。 2)除此之外,如果用户直接按下提交按钮,则应验证所有必要的字段,如第一步所述。在此先感谢...

标签: asp.net-mvc validation razor


【解决方案1】:

我创建了一个简单的示例。这只是给您一个开始,您仍然需要根据需要修改此代码。此示例使用 jquery 表单验证。

型号

  public class Vehicle
    {
        public int Id { get; set; }
        public string Make { get; set; }
        public string Model { get; set; }
    }

控制器和动作

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

查看

@model JqueryValidationDemo.Models.Vehicle

@{
    ViewBag.Title = "Jquery Form Validation Demo";
}
<script src="~/Scripts/jquery-2.0.3.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script>
    $(document).ready(function () {
            $('#myform').validate({ // initialize the plugin
                rules: {
                    Make: {
                        required: true,
                        minlength: 2
                    },
                    Model: { required: true }
                },
                messages: {
                    Make: {
                        required: "Make is required!",
                        minlength: "Make Name at least 2 characters long!"
                    },
                    Model: {
                        required: "Modl is required!"
                    }
                },
                submitHandler:
                    $("#myform").on('submit', function () {
                        if ($("#myform").valid()) {
                            //Do something here
                            alert("Validation passed");
                        }
                        return false;
                    })
            })
    });
</script>

@using (Html.BeginForm("Index", "Home", FormMethod.Get, new { @id = "myform" }))
{
    <fieldset>
        <legend>Vehicle</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.Make)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Make)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Model)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Model)
        </div>
        <p>
            <input type="submit" value="Submit" />
        </p>
    </fieldset>
}

注意:小心你的 jquery 引用,你不需要使用 jquery.validate.unobtrusive.js。

希望它能给你一个好的开始。

更新: 删除 keyup 或 keypress

移除按键

$("#youElementId").bind('keypress', function (e) {
    if (e.keyCode == 13) {
        return false;
    }
    return true;
});

【讨论】:

  • 非常感谢您的精彩解释。正如你所说,这对我来说是一个好的开始,现在我正在改进我的验证。我希望您的回答对那些不愿意提供帮助的人来说是一个很好的例子。问候...
  • @H.Johnson,没问题。很高兴为您提供帮助。
  • @H.Johnson,我更新了使用 jquery 删除按键的答案。删除 keyup 与 keypress 相同。
  • @H.Johnson,你说的是 jquery 不显眼的验证。这不是 jquery 表单验证。 Jquery 表单验证是在您单击提交按钮后,将触发验证。下面的链接是使用jquery表单验证的,大家可以看看。 jquery4u.com/demos/basic-jquery-validation-form
  • 我想您需要决定要使用哪种验证方法。不显眼的验证是常见的验证方法。但在某些情况下,如您之前所说,您希望在单击提交按钮后验证每个字段,您应该使用表单验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多