jquery 验证在内容占位符中不起作用

jquery validate not working in content place holder

我正在尝试使用 jquery 验证我的 asp 页面。我已经通过 nuget 包下载了所有必需的 js 文件。请参阅所附图片。 我遵循了 http://www.dotnetcurry.com/ShowArticle.aspx?ID=310&AspxAutoDetectCookieSupport=1 中提供的教程 并尝试了一些简单的验证,但它不起作用。

我尝试在 firefox 和 chrome 中打开我的页面并检查了控制台错误。浏览器的控制台中没有显示错误,但我也没有得到任何结果。我无法弄清楚我的流程或代码有什么错误。 我的代码::

// master page
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Global.master.cs" Inherits="MIS.content.Global" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script type="text/javascript" src="../Scripts/jquery-3.1.1.min.js"></script>    
    <script type="text/javascript" src="../Scripts/jquery.validate.min.js"></script>
    <script type="text/javascript" src="../Scripts/jquery.validation.net.webforms.min.js"></script>

    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
        <div id="container">
            <div id="tray">
                testing
            </div>
            <div id="cols">
                <div id="aside">                    
                </div>
                <div id="content">
                    <div id="main_content">                        
                        <div>
                            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                            </asp:ContentPlaceHolder>
                        </div>
                    </div>
                </div>

            </div>
        </div>
    </form>
</body>
</html>

aspx 页

<%@ Page Language="C#" MasterPageFile="Global.master" AutoEventWireup="true" CodeBehind="CustomerRegistration.aspx.cs" Inherits="MIS.content.CustomerRegistration" %>

<asp:Content ID="UserContent" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">   
    <script type="text/javascript">
        $(document).ready(function() {
            $("#aspnetForm").validate({
                rules: {
                    <%=txt_name.UniqueID %>: {
                        minlength: 2,
                        required: true
                    },
                    <%=txt_gender.UniqueID %>: {                       
                        required: true,
                        email:true
                    }
                }, messages: {}
            });
        });
    </script>
    <div style="width: 100%; font-family: Arial,Helvetica, sans-serif;">
        <div style="text-align: left; width: 100%; font-size: 13px; margin-bottom: 5px;">
            <b>Name :</b>
            <asp:textbox id="txt_name" runat="server" />
        </div>
        <div style="text-align: left; width: 100%; font-size: 13px; margin-bottom: 5px;">
            <b>Gender :</b>
            <asp:textbox id="txt_gender" runat="server" />
        </div>
        <div style="text-align: left; width: 100%; font-size: 13px; margin-bottom: 5px;">
            <asp:button id="btnSubmit" runat="server" text="Submit" />
        </div>
    </div>
</asp:Content>

改变

$("#aspnetForm").validate({

进入

$("#form1").validate({

在您提供的 the link 中,ID #formmaster 的验证已激活。在他们的截图中,ID formmaster 被用作 <form> 标签的 ID:<form id="formmaster" runat="server">

并检查验证是否需要字段名称或 ID。大多数时候它使用 ID。因此,您可能需要将 <%=txt_name.UniqueID %> 更改为 <%=txt_name.ClientID %>