0

我从http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/下载了这个 jquery 验证引擎

除了确认密码验证之外,所有验证都工作正常,无论密码是否匹配,它都会一直验证。

验证在单个页面上非常有效,但在母版页的内容页面中不起作用。

请帮我...

.aspx 文件

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script src="Styles/jquery-1.6.min.js" type="text/javascript"></script>
    <script src="Styles/jquery.validationEngine-en.js" type="text/javascript"></script>
    <script src="Styles/jquery.validationEngine.js" type="text/javascript"></script>
    <link href="Styles/validationEngine.jquery.css" rel="stylesheet" type="text/css" />
     <script type="text/javascript">
         jQuery(document).ready(function () {
             // binds form submission and fields to the validation engine
             jQuery("#form1").validationEngine();
         });
     </script>
     <form id="form1" runat="server">
     <br />
     <br />
     <br />
     <asp:TextBox ID="TextBox1" runat="server" class="validate[required] text-input"></asp:TextBox>
    <br /><asp:TextBox ID="TextBox2" runat="server" class="validate[required,equals[TextBox1]] text-input"></asp:TextBox>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Button" />

      </form>
</asp:Content>
4

3 回答 3

1

当 .net 呈现时,它会更改表单 ID,而不是使用:

jQuery("#form1").validationEngine(); 

请用:

jQuery("form").validationEngine();

查看源代码并获取表单的 id 并将其放置在那里

于 2012-06-09T11:11:06.537 回答
1

好的,所以你在这里有几件事。首先,您可能不应该将表单元素放在内容页面中。典型的 ASP.NET 表单位于母版页中。你可能会为自己做更多的工作,但是.. 我能理解你为什么会这样做。因此,您的主要问题是,当您在母版页中有内容时,(默认行为)ID 字段将获得前缀,以便它们不会与另一个占位符中的内容的 id 冲突。

如果您查看源代码,“TextBox1”将类似于

<input name="ctl00$MainContent$TextBox1" type="text" value="asdf" id="MainContent_TextBox1" class="validate[required] text-input" />

您的验证正在寻找 TextBox1 而不是 MainContent_TextBox1。

你有几个选择。了解每种方法的后果很重要(我将把它留给你研究)。

选项 1:在您的母版页顶部(在其声明中),您可以将其放在您的 ClientIDMode="Static" 中。ASP.NET 不会接触您的 ID,如果它们发生冲突,那是您的责任。

选项 2:我不关心这个,但偶尔会使用它。从 asp.net 获取客户端 ID

验证[必需,等于[<%= TextBox1.ClientID %>]]

选项 3:可能还有其他可能放入一个 jquery 选择器来找到像 TextBox1 这样的 id

希望这可以帮助

于 2011-09-08T19:52:26.373 回答
0

我和你有同样的问题并解决了这个问题。

你可以轻松做到。

将此添加到母版页顶部(我只添加了 ClientIDMode="Static")

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="geneticAjans.master.cs" Inherits="geneticAjans_gen" ClientIDMode="Static" %>

将此添加到 $(document).ready(); 的内部 (您应该写下您的母版页表单 ID)

$("#Button1").click(function(){
    if ($("#form1").validationEngine('validate') == false)
        return false;
});

现在,您的 JQuery 验证引擎应该可以工作了。

于 2013-06-21T08:30:23.737 回答