【问题标题】:jquery validation bootstrap wizard with chosen?jQuery验证引导向导选择?
【发布时间】:2014-02-06 17:58:55
【问题描述】:

所以我有一个引导向导,其中包含一些选定的选择框。我添加了 ignore: ':hidden:not(select)' 以允许 jquery validate 验证选择。

这使这些框有效,但..不是正确的步骤。它会在每一步验证所有选择的框!

var $validator = $("#register").validate({
    ignore: ':hidden:not(select)',
    rules: {
        country: {
            required: true
        }
    }
});
$('#registerwiz').bootstrapWizard({
    'onNext': function(tab, navigation, index) {
        var $total = navigation.find('li').length;
        var $current = index+1;
        var $percent = ($current/$total) * 100;
        var $valid = $("#register").valid();
        if(!$valid) {
            $validator.focusInvalid();
            return false;
        } else {
            $('#registerwiz').find('.progress-bar').css({width:$percent+'%'});
        }
    }
});

所以我想知道如何让它只验证特定步骤中选择的框。

如果可能的话,将错误警告放在所选框下方。

【问题讨论】:

  • 由于.validate() 是您页面上插件的一次性 初始化,因此您不能动态 更改ignore 选项,如果这是你想做什么。您的设置适用于整个表单,以后无法更改。您只能使用.rules('add') 方法动态更改规则。因此,当您设置该步骤时,只需将required 添加到您需要验证的隐藏字段中。然后在下一步,使用.rules('remove')等。
  • 我有点理解你在说什么,但我发现很难把它变成代码。我在 onNext 函数中说我有 if(index==3) { 并在此处添加规则和} else { 在此处删除规则} 是否正确。那是正确的做法吗?

标签: twitter-bootstrap jquery-validate wizard jquery-chosen


【解决方案1】:

添加错误放置

errorPlacement: function (error, element) {
            if (element.is('input[type=checkbox]') || element.is('input[type=radio]')) {
                var controls = element.closest('div[class*="col-"]');
                if (controls.find(':checkbox,:radio').length > 1) controls.append(error);
                else error.insertAfter(element.nextAll('.lbl:eq(0)').eq(0));
            }
            else if (element.is('.select2')) {
                error.insertAfter(element.siblings('[class*="select2-container"]:eq(0)'));
            }
            else if (element.is('.chosen-select')) {
                error.insertAfter(element.siblings('[class*="chosen-container"]:eq(0)'));
            }
            else error.insertAfter(element.parent());
        }

效果很好

【讨论】:

  • 谢谢,它工作正常。顺便提一下:它必须在传递给validate函数的对象参数中声明为属性,与rules处于同一级别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
相关资源
最近更新 更多