我有一個能夠從多個頁面上的用戶接受付款的網站。我原本是一個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."
});
那是頁面的一個非常淡化的版本,但所有其他控件的聲明方式與其中的太多控件一樣包括在這裏。這些部分在頁面上的顯示順序與我在這裏列出的順序相同。 txtAccountnumber
是PaymentDialog
用戶控件中的文本框,類名被硬編碼爲txtAccountnumber
。
我的問題是第一個,是否有可能做我想要的?其次,有沒有更好的方法來實現這一點?第三,我是否缺少實現導致jquery.validate.js文件本身引發錯誤的驗證的關鍵步驟?