2010-05-17 68 views
3

我有一个奇怪的情况可能是它的一个简单的修复或我可能会丢失的东西,但这里是问题。在ASP.NET中的jQuery验证

我有母版页asp.net的形式和我确认没有任何问题的伟大工程,但问题开始时我尝试我的点击事件挂钩到服务器端,

这里就是我的意思: 我有它,如果表单是空的比它应该停止提交几个字段的表单,否则允许我执行服务器端脚本

但它没有发生,甚至我的形式是处于无效状态(我确实收到错误消息,说我必须输入所需的文件)但仍然执行我的服务器端脚本。

我想仅在窗体处于有效状态时才执行我的服务器端脚本。

这里是我的代码: 我的母版页

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>jQuery Validation in ASP.NET Master Page</title> 
    <script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script> 
    <script src="Scripts/jquery-1.3.2-vsdoc2.js" type="text/javascript"></script> 
    <script src="Scripts/jquery.validate.js" type="text/javascript"></script> 

    <asp:ContentPlaceHolder id="head" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> 

     </asp:ContentPlaceHolder> 
    </div> 
    </form> 
</body> 
</html> 

我的内容页:

<%@ 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 type="text/javascript"> 
     $(document).ready(function() { 
      $("#aspnetForm").validate({ 
       rules: { 
        <%=txtName.UniqueID %>: { 
         minlength: 2, 
         required: true 
        }, 
        <%=txtEmail.UniqueID %>: {       
         required: true, 
         email:true 
        } 
       }, messages: { 
        <%=txtName.UniqueID %>:{ 
         required: "* Required Field *", 
         minlength: "* Please enter atleast 2 characters *" 
        } 
       } 
      }); 
     }); 
    </script> 

    Name: <asp:TextBox ID="txtName" MaxLength="30" runat="server" /><br /> 
    Email: <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox><br /> 
    <asp:Button ID="btnSubmit" runat="server" onclick="SubmitTheForm();" Text="Submit" /> 
</asp:Content> 



function SubmitTheForm() { 
    SaveTheForm(); 
} 


function SaveTheForm() { 
    debugger; 
    var request = buildNewContactRequest(); 

    ContactServiceProxy.invoke({ serviceMethod: "PostNewContact", 
     data: { request: request }, 
     callback: function(response) {  
      processCompletedContactStore(response); 
     }, 
     error: function(xhr, errorMsg, thrown) { 
      postErrorAndUnBlockUI(xhr, errorMsg, thrown); 
     } 
    }); 
    return false; 
} 

我试图左右逢源

1)

$(document).ready(function() { 
     $("#btnSubmit").click(function(event) { 
      event.preventDefault(); 
      SaveTheForm(); 
    }); 
}); 

2)

<asp:Button ID="btnSubmit" runat="server" onclick="SubmitTheForm(); 

    function SubmitTheForm() { 
     SaveTheForm(); 
    } 

回答

4

您发布的数据,而不检查,如果表单是否有效 我认为你必须使用类似这样的东西

function SubmitTheForm() { 
    if ($("#aspnetForm").valid()) SaveTheForm(); 
} 
+0

你达人:) +1 – 2010-05-17 18:40:07

0

对不起,我给你不好的建议。忘记我以前的记录。 SubmitTheForm()方法是什么?您使用的是jQuery验证插件,因此您只需要将验证内容附加到表单中,并且所有内容都应该与世界一致。

+0

验证 - 它来自哪里?,它向我抛出错误 – 2010-05-17 17:47:09

+0

我已更新了我的qeustion。 – 2010-05-17 18:06:12

0

我觉得你的按钮的onclick必须

return SaveTheForm(); 

如:

<asp:Button ID="btnSubmit" runat="server" onclick="return SubmitTheForm();" Text="Submit" /> 
0

您是否尝试将jQuery代码脚本放在Head Cont entPlaceHolder