MVC3 Razor / JQuery客户端验证不起作用

时间:2011-08-23 15:09:46

标签: jquery asp.net-mvc-3 validation razor client

我使用ASP.NET MVC 3 Razor和jquery验证插件来构建注册表单。 所以我把它包括在内:

<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript">    </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

我在Web.config中添加了以下内容:

<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

我的Razor表格如下:

@model bop.Web.Models.ProfileModel

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Page title</h2>
@Html.ValidationSummary(true)
@using (Html.BeginForm("Register", "Profile", FormMethod.Post, new { id = "RegForm" }))
{
    <fieldset>
        <div class="editor-label">
            @Html.LabelFor(model => model.companyName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.companyName)
            @Html.ValidationMessageFor(model => model.companyName)
        </div>
        <div>
        ... here other input fields ...
        </div>
        <a href="#" id="nextbtn1">GO TO STEP 2</a>
    </fieldset>

在底部,我有:

<script type="text/javascript">
    $(document).ready(function () {
        $('#nextbtn1').click(function () { // bind click event to link
            $("#RegForm").validate();
            if ($("#RegForm").valid()) {
                var $tabs = $('#tabs').tabs(); // first tab selected
                $tabs.tabs('select', 1); // select second tab
                return false;
            }
        }
    }
</script>

我在click事件上使用bind,因为我的注册表单分为3个选项卡,因此我将在第三步执行提交。

问题是,当我点击“转到第2步”按钮时,我收到此错误:

Run-time error in Microsoft JScript: Object does not support this property or method 'validate'

非常感谢您提供有用的指示。

1 个答案:

答案 0 :(得分:2)

在检查表单是否有效之前,您必须先验证它,然后在第if ($("#RegForm").valid()) {行之前插入以下内容:

$("#RegForm").validate();