JQuery验证引擎无法在主页文件的ASP页面中工作

时间:2011-09-01 11:19:02

标签: jquery asp.net master-pages jquery-validation-engine

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

确认密码验证之外,所有验证都正常运行,它始终有效 天密码是否匹配。

验证在单个页面上有效,但在母版页的内容页面中无效

请帮帮我......

.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>

3 个答案:

答案 0 :(得分:1)

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

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

&lt; input name =“ctl00 $ MainContent $ TextBox1”type =“text”value =“asdf”id =“MainContent_TextBox1”class =“validate [required] text-input”/&gt;

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

你有几个选择。重要的是要了解每个人的后果(我会留给你研究)。

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

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

验证[必需,等于[&lt;%= TextBox1.ClientID%&gt;]]

选项3: 可能还有其他可能放入jquery选择器,找到像TextBox1

这样的id

希望这会有所帮助

答案 1 :(得分:1)

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

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

请使用:

jQuery("form").validationEngine();

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

答案 2 :(得分:0)

我遇到了同样的问题并解决了这个问题。

你可以轻松完成。

添加到主页顶部(我只添加了ClientIDMode =“静态”)

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

将其添加到$(文件).ready(); (你应该写你的母版页面表格id)

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

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