jquery验证(使用jquery validate plugin) - 根据单击的按钮激活特定元素的验证规则

时间:2012-02-10 21:55:14

标签: javascript jquery html jquery-validate

好的,我在这里遇到了一个恼人的问题。我在研究中了解到,不止一次使用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;
}

我想我在这里只是遗漏了一些非常简单的东西,但我厌倦了看它,需要专注于其他事情。谢谢!

1 个答案:

答案 0 :(得分:1)

这是使用jQuery.Validate吗?如果是这样,它将仅验证屏幕上可见的元素,因此您不必执行任何特殊逻辑来更改规则。只需一次分配所有规则,并确保忽略隐藏的输入。

完成后,您可以绑定每个按钮上的click事件,使用$(yourForm).validate().form()检查表单的验证状态,如果它返回true(有效),则转到下一个面板。流程中的最后一个按钮应该实际提交。