我有一个网站,可以在多个页面上从用户那里收取款项。我最初是一名 winforms 编码员,因此我试图将付款所需的所有字段集中在一个自定义用户控件中。我已经设置好用户控件并准备就绪,现在正尝试使用 JQuery 插件实现验证。
我最初尝试将与 usercontrols 子控件相关的验证放在 usercontrol 本身上,当支付用户控件是页面上唯一的东西时,它似乎按预期工作,当除了支付之外还有其他信息需要时,问题就出现了得到验证。
在我看来,因为包含所有控件的表单只有一个名称(显然)用户控件验证声明正在清除主页验证声明,因为如果我删除了自定义控件验证声明,那么主页验证按预期工作反之亦然。
我发现这个问题是关于根据控件的类名手动向单个控件添加验证。当我尝试这样做时,我在 JQuery.validate.js 文件本身中遇到错误(关于:if(command){var settings=$.data(element.form,'validator').settings;
它的价值)在通过我的开发环境检查值后,我发现错误是$.data(element.form,'validator')
未声明的,因此它无法引用设置。
表单和控件声明:
<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 文件本身引发错误的验证的关键步骤?