求教jquery.validate在使用了masterpage的页面下失效,已经使用了<%=form1.ClientID%>,查看源代码id也都是对的,在单纯的页面下测试没问题,有没大神可以告诉小弟,谢谢<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<script type="text/javascript" language="javascript">
    $().ready(function () {
        $("#<%=form1.ClientID %>").validate({
            rules: {
                username:
                    {
                        required: true,
                        remote: {
                            type: "POST",
                            url: "WebService.asmx/Test",
                            dataType: "xml",
                            data: { uid: function () { return $("#<%=username.ClientID%>").val(); } },
                            dataFilter: function (dataXML) {
                                var result = jQuery(dataXML).find("boolean").text();
                                if (result == "false") {
                                    return false;
                                }
                                else {
                                    return true;
                                }
                            }                        }                    },
                email: {
                    required: true,
                    email: true
                },
                password: {
                    required: true,
                    minlength: 5
                },
                confirm_password: {
                    required: true,
                    minlength: 5,
                    equalTo: "#<%=password.ClientID %>"
                }
            },
            messages: {
                username: "请输入姓名",
                email: {
                    required: "请输入Email地址",
                    email: "请输入正确的email地址"
                },
                password: {
                    required: "请输入密码",
                    minlength: jQuery.format("密码不能小于{0}个字符")
                },
                confirm_password: {
                    required: "请输入确认密码",
                    minlength: "确认密码不能小于5个字符",
                    equalTo: "两次输入密码不一致不一致"
                }
            }
        });
    }); 
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <form id="form1" runat="server">
    <div>
    username :<input type="text" id="username" name="username" runat="server" />
    <br />
    email: <input type="text" id="email" name="email" runat="server" />
    <br />
    password: <input type="password" id="password" name="password" runat="server" />
    <br />
    confirm: <input type="password" id="confirm_password" name="confirm_password" runat="server" />
    <br />
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    </div>
    </form>
</asp:Content>

解决方案 »

  1.   

      form是不能嵌套的MasterPage.master里面应该已经有一个form了
      

  2.   


    没有,我把那个form删掉了,而且我也已经试过把form放在masterpage里,也没用
      

  3.   

    在单纯的页面下测试没问题?
    你对照下aspx生成的浏览器页面源代码与你的测试页面之间有什么差别
      

  4.   

    另外注意
    url: "WebService.asmx/Test",路径是否正确,

    url: "<%=Page.ResolveUrl("~")%>WebService.asmx/Test",比较好
      

  5.   

    我是真没看出区别,才上来求助的,没招了。还有"<%=Page.ResolveUrl("~")%>试过了,也木有作用貌似,彻底迷茫中。
      

  6.   

    本帖最后由 net_lover 于 2012-07-10 15:22:52 编辑
      

  7.   

    表现是webservice call不到,验证不起作用,就跟没写一样,debug过,木有啥异常,我在想会不会跟page和master page的加载顺序有关