2010-05-17 69 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