jquery.validate对非活动选项卡的验证

jquery.validate对非活动选项卡的验证,jquery,jquery-validate,jquery-ui-tabs,Jquery,Jquery Validate,Jquery Ui Tabs,我有一个表单,用来组织不同的字段。我用它来验证。例如,某些字段具有class=“required”,通知插件进行所需字段验证。最后,在提交表单之前,我验证表单以确保所有输入都是正确的。一个简单的用法,如- HTML ... <input type="text" class = "required" ... SCRIPT ... $("#frmClaim").validate();//to initilize validation ... $('#frmClaim').submit(f

我有一个表单,用来组织不同的字段。我用它来验证。例如,某些字段具有class=“required”,通知插件进行所需字段验证。最后,在提交表单之前,我验证表单以确保所有输入都是正确的。一个简单的用法,如-

HTML

...
<input type="text" class = "required" ...

SCRIPT

...
$("#frmClaim").validate();//to initilize validation
...
$('#frmClaim').submit(function () {            
             if($(this).valid())
                { ... }
         });
...
HTML
...
试试看

var frmCl=$("#frmClaim").validate();//to initilize validation
...
$('#frmClaim').submit(function () { 
     if($(frmCl).valid())
         { ... }
});

像这样初始化验证以验证隐藏字段

$("#frmClaim").validate( 
 { ignore: [] }
);
试试这个:

function saveStuff() {

    $.validator.unobtrusive.parse('#FORMID');

    var data = {};

    var anyError = false;

    var _frm = $('#FORMID');

    var _validator = _frm.data('validator');
    _validator.settings.ignore = "";

    _frm.find('input, select, textarea').each(function () {
        if (!_validator.element(this)) {
            anyError = true;
        }
    });

    if (anyError) {
        return false;
    }

    //SAVE DATA CODE HERE
}

我找到了一个适合我的解决方案。其思想是迭代所有选项卡,在表单上调用validate并在发现无效选项卡时停止,或者在没有无效字段时提交表单

$("#my_form").validate({
        submitHandler: function (form, evt) {
            var f = $(form);
            var tab = $("#my_tab_id");
            var tabs_count = tab.children('ul').children('li').length;
            var active = tab.tabs('option', 'active');
            var invalid = false;
            var validated = 0;

            while (validated < tabs_count && !invalid) {
                if (!f.valid()) {
                    invalid = true;
                    break;
                }

                active++;
                active = active % tabs_count;
                tab.tabs('option', 'active', active);

                validated++;
            }

            if (!invalid)
                form.submit();
            else
                evt.preventDefault();
        },
        rules: {
            ...
        },
        messages: {
            ...
        }
    });
$(“#我的表格”)。验证({
submitHandler:函数(表单,evt){
变量f=$(形式);
var tab=$(“#我的#tab_id”);
var tabs_count=tab.children('ul')。children('li')。长度;
var active=tab.tabs('option','active');
var无效=错误;
var=0;
while(已验证
你确定这就是你的意思吗?它不起作用。frmCl是对验证器的引用,调用$(frmCl)。valid()只是抛出了一个错误。很高兴我已经完成了一半。但正如预期的那样,它没有将焦点设置到有错误的选项卡上,所以我相信我必须手动检查并设置它。阅读项目站点时,这是由于1.9中默认忽略了隐藏元素。