好的,我在这里遇到了一个恼人的问题。我在研究中了解到,不止一次使用validate()不起作用。所以我设置了一个功能,响应点击的某些按钮的onclick。这些按钮发送参数以标识要验证的元素。我这样做是因为我使用.fadeOut()/。fadeIn()来无缝地从一个部分移动到另一个部分。一旦你点击了第一部分按钮(它带你进入第二部分),它将验证第一部分中的元素,如果第一部分被认为是“有效”,那么它将进入fadeOut / fadeIn到b部分......等等上。
问题是,虽然我已经为a和b部分设置了规则和消息,但b部分似乎仍然无法验证。
这是我的代码 -
function validation(page) {
var rules;
var messages;
var validator;
if (page == 'secA') {
rules = {
/*gneral information validation*/
gCompanyTxt: {
required: true,
minlength: 2
}
messages = {
/*general info validator messages*/
gCompanyTxt: {
required: "The 'Company' text box is empty safgadfgad",
minlength: "The 'Company' text box needs to have at least 2 characters"
}
};
validator = new jQueryValidatorWrapper("form1", rules, messages);
} else if (page == 'secB') {
rules = {
txtFirst: {
required: true,
minlength: 2
}
};
messages = {
txtFirst: {
required: "Your first name is required",
minlength: "Your first name needs to be at least two characters"
}
};
validator = new jQueryValidatorWrapper("form1", rules, messages);
}
if (!validator.validate()) {
return;
} else {
if (page == 'secA') {
$('#secA').hide();
$('#secB').fadeIn('slow');
} else if (page == 'secTwo') {
$('#secB').hide();
$('#secC').fadeIn('slow');
}
}
}
按钮是这样的:
<button type = "button" class="buttonSale" id="btnA" onclick="validation('secA')">Proceed to Section B</button>
<button type = "button" class="buttonSale" id="btnB" onclick="validation('secB')">Proceed to Section C</button>
这样做的结果是 - 当点击“btnA”代码有效时,如果事情是空的或不正确的,验证会激活,我可以解决这个问题,然后再继续。但是,一旦我在b部分并单击'btnB',它只会移动到下一页并且似乎跳过if语句:
if (!validator.validate()) {
return;
}
我想我在这里只是遗漏了一些非常简单的东西,但我厌倦了看它,需要专注于其他事情。谢谢!
答案 0 :(得分:1)
这是使用jQuery.Validate吗?如果是这样,它将仅验证屏幕上可见的元素,因此您不必执行任何特殊逻辑来更改规则。只需一次分配所有规则,并确保忽略隐藏的输入。
完成后,您可以绑定每个按钮上的click事件,使用$(yourForm).validate().form()
检查表单的验证状态,如果它返回true(有效),则转到下一个面板。流程中的最后一个按钮应该实际提交。