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

jquery validation (using jquery validate plugin) - activating validation rules for specific elements based on the button clicked

本文关键字:验证 jquery 按钮 激活 规则 元素 使用 插件 -根 单击      更新时间:2023-09-26

好吧,我在这里遇到了一个烦人的问题。我在研究中了解到,多次使用validate()是无效的。因此,我设置了一个函数,用于响应单击的某些按钮。这些按钮发送一个参数来标识要验证的元素。我这样做是因为我使用.fadeOut()/.fadeIn()来无缝地从一个小节移动到另一个小节。单击第一部分按钮(进入第二部分)后,它将验证第一部分中的元素,如果第一部分被视为"有效",则它将前进到部分b的fadeOut/fadeIn…依此类推

问题是,尽管我已经为部分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;
}

我想我只是错过了一些非常简单的东西,但我已经厌倦了看它,需要专注于其他事情。谢谢

这是使用jQuery.Valide吗?如果是这样的话,它只会验证屏幕上可见的元素,所以你不应该做任何特殊的逻辑来更改规则。只需一次分配所有规则,并确保它忽略隐藏的输入。

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