高级JQuery验证:避免在某些条件下进行验证
我正在制作一个表单,我正在使用令人惊叹的JQuery验证插件() 此表格允许人们捐款,并指定他们是用支票还是信用卡付款。我使用单选按钮显示信用卡asp面板或支票asp面板 我的规则和信息都有效。但是,我希望创建一个规则,避免根据另一个因素(信用卡面板的可见性设置为“隐藏”)验证表单的某些部分(信用卡面板) 请原谅我将要告诉你们的代码——我去掉了大部分不相关的部分,只留下那些证明我的方法的部分 My body_onload javascrip方法:高级JQuery验证:避免在某些条件下进行验证,jquery,validation,Jquery,Validation,我正在制作一个表单,我正在使用令人惊叹的JQuery验证插件() 此表格允许人们捐款,并指定他们是用支票还是信用卡付款。我使用单选按钮显示信用卡asp面板或支票asp面板 我的规则和信息都有效。但是,我希望创建一个规则,避免根据另一个因素(信用卡面板的可见性设置为“隐藏”)验证表单的某些部分(信用卡面板) 请原谅我将要告诉你们的代码——我去掉了大部分不相关的部分,只留下那些证明我的方法的部分 My body_onload javascrip方法: function body_onload() {
function body_onload()
{
document.getElementById('<%=Cheque.ClientID %>').style.display = 'none';
document.getElementById('<%=CreditCard.ClientID %>').style.display = 'none';
}
function body_onload()
{
document.getElementById(“”).style.display='none';
document.getElementById(“”).style.display='none';
}
选择付款方式的我的单选按钮:
<div style="width:430px; padding:5px;"><b>Payment Method:</b>
<input type="radio" name="PaymentMethod" value="Cheque" onclick="ShowPaymentPanel(this.value)"/>Cheque <input type="radio" name="PaymentMethod" value="CreditCard" onclick="ShowPaymentPanel(this.value)"/>Credit Card</div>
付款方式:
支票信用卡
还有我冗长的验证方法:
$(document).ready(function(){
jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
phone_number = phone_number.replace(/\s+/g, "");
return this.optional(element) || phone_number.length > 9 &&
phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "<br/> Please specify a valid phone number");
// validate form on keyup and submit
$("#TransactionForm").validate({
rules: {
FirstName: "required",
LastName: "required",
Phone: {
required: true,
phoneUS: true
},
CCName:{
required: true
},
CCNumber:{
required: true,
creditcard: true
},
CCExpiry:{
required: true,
digits: true,
minlength: 4,
maxlength: 4
}
},
messages: {
FirstName: "<br/> Required",
LastName: "<br/> Required",
Phone: {required: "<br/> Required"},
CCName: "<br/> Please enter the name on the card",
CCNumber: {
required: "<br/> Please enter the card number",
creditcard: "<br/> Please enter a valid card number"
},
CCExpiry: {
required: "<br/> Please enter the expiry date",
minlength: "<br/> Please enter as MMYY",
maxlength: "<br/> Please enter as MMYY",
digits: "<br/> Date must be numeric"
}
}
});
});
$(文档).ready(函数(){
jQuery.validator.addMethod(“phoneUS”,函数(phone\u编号,元素){
电话号码=电话号码。替换(/\s+/g,“”);
返回此。可选(元素)| |电话号码。长度>9&&
电话号码。匹配(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
},“
请指定一个有效的电话号码”);
//在keyup上验证表单并提交
$(“#交易表单”).validate({
规则:{
名字:“必选”,
姓氏:“必需”,
电话:{
要求:正确,
真的吗
},
名称:{
必填项:true
},
编号:{
要求:正确,
信用卡:对
},
C验证:{
要求:正确,
数字:对,
最小长度:4,
最大长度:4
}
},
信息:{
名字:“
必需”,
LastName:“
必需”,
电话:{必选:
必选“},
CCName:“
请在卡上输入姓名”,
编号:{
必填:“
请输入卡号”,
信用卡:“
请输入有效的卡号”
},
C验证:{
必填项:“
请输入有效期”,
minlength:“
请输入MMYY”,
maxlength:“
请输入MMYY”,
数字:“
日期必须是数字”
}
}
});
});
任何帮助都将不胜感激 验证插件允许这样做,对于不限于true/false的必需属性,您可以在规则中执行此操作:
CCNumber:{
required: "#<%=CreditCard.ClientID %>:visible",
creditcard: "#<%=CreditCard.ClientID %>:visible"
}
CCNumber:{
必填项:“#:可见”,
信用卡:“#:可见”
}
此外,如果出于某种原因不受限制,您可以缩短onload中的其他语法:
$(function() {
$("#<%=Cheque.ClientID %>").hide();
$("#<%=CreditCard.ClientID %>").hide();
});
$(函数(){
$(“#”)隐藏();
$(“#”)隐藏();
});
但是,我建议对它们应用“隐藏”css样式以避免任何可能的闪烁,然后只使用
$(“#”)show()代码>语法,以在您所做的任何操作触发它时显示它们。不管你用什么方法,可见选择器都会工作,它的行为和声音一模一样。谢谢,这正是我需要的!