2013-04-26 53 views
1

我有一個能夠從多個頁面上的用戶接受付款的網站。我原本是一個winforms編碼器,所以我試圖集中所有需要在一個自定義用戶控件中進行付款的字段。我有用戶控件都設置好了,並準備好了,現在正在嘗試使用JQuery插件實現驗證。在自定義用戶控件中使用JQuery驗證

我最初嘗試將驗證綁定到用戶控件上的usercontrols子控件本身,並且當付款用戶控件是頁面上唯一的東西時,它看起來像預期的那樣工作,問題出現時除了有其他信息需要驗證的付款。

它在我看來,因爲包含所有控件的表單只有一個名稱(顯然)usercontrols validate聲明已經清除了主頁面的validate聲明,因爲如果我刪除了自定義控件驗證聲明,那麼主頁面驗證按預期工作,反之亦然。

我找到了this這個問題,它討論了根據控件的類名爲個別控件手動添加驗證。當我嘗試這樣做時,我得到了JQuery.validate.js文件本身的一個錯誤(在:if(command){var settings=$.data(element.form,'validator').settings;爲什麼它的價值)通過我的開發環境檢查值後,我發現錯誤是$.data(element.form,'validator')未申報,因此它可以' t引用設置。

窗體和控件聲明:

<form id="MasterPageForm" runat="server" class="entireForm"> 
    <asp:TextBox id="txtmoveInDate" class="txtmoveInDate" runat="server" /> 
    <mo:PaymentDialog runat="server" ID="PaymentInput" ClassName="SubmitPayment" DisplayDesc="Submit" IsAmmountEditable="false" /> 
</form> 

主頁確認聲明:

$.validator.setDefaults(); 
$(document).ready(function() { 
    $('#aspnetForm').validate({ 
     rules: { 
     <%=txtmoveInDate.UniqueID%>: { required: true, date: true } 
     } 
     messages: { 
     <%=txtmoveInDate.UniqueID%>: { 
       required: "Please enter the move in date.", 
       date: "Please enter a valid move in date." 
    } 
    } 
}); 

類選擇驗證聲明:

$('.txtAccountnumber').rules("add", { 
    required: true, 
    creditcard: true, 
    minlength: 15, 
    maxlength: 16 
}); 
$('.txtAccountnumber').messages("add", { 
    required: "You must supply the credit card account number.", 
    minlength: "Please enter a valid Credit Card account number.", 
    maxlength: "Please enter a valid Credit Card account number.", 
    creditcard: "Please enter a valid Credit Card account number." 
}); 

那是頁面的一個非常淡化的版本,但所有其他控件的聲明方式與其中的太多控件一樣包括在這裏。這些部分在頁面上的顯示順序與我在這裏列出的順序相同。 txtAccountnumberPaymentDialog用戶控件中的文本框,類名被硬編碼爲txtAccountnumber

我的問題是第一個,是否有可能做我想要的?其次,有沒有更好的方法來實現這一點?第三,我是否缺少實現導致jquery.validate.js文件本身引發錯誤的驗證的關鍵步驟?

回答

0

我能夠通過使用validator.addClassRules函數解決這個問題,並假設我想用於實際驗證的方法。

我認爲問題在於我在主要頁面ready函數中添加了主窗體驗證,並且在ready函數之外設置了用戶控件驗證。

因此,最終我將驗證移到了它自己的函數中,在設置ready函數之前包含.js文件,然後調用函數在頁面內添加用戶控件驗證ready功能。