使用Select2 4.0和Bootstrap 3设置jQuery验证样式

前端之家收集整理的这篇文章主要介绍了使用Select2 4.0和Bootstrap 3设置jQuery验证样式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用Bootstrap 3.3.4,Select2 4.0和 Jquery Validation 1.13.1的项目

我已经将jquery验证器默认设置为样式bootstrap 3类,如此

$.validator.setDefaults({
    errorElement: "span",errorClass: "help-block",highlight: function (element,errorClass,validClass) {
    $(element).addClass(errorClass);
        $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
    },unhighlight: function (element,validClass) {
    $(element).removeClass(errorClass);
        $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
    },errorPlacement: function(error,element) {
        if(element.parent('.input-group').length) {
           error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }

    }
});

但是这些默认值不会将select2字段设置为相同…在下图中,“Metals”选择是一个bootstrap字段,而“colors”select是一个select2字段.

我尝试搜索其他SO,但所有这些都使用3.5.xx版本的select2

包括了一个示例的jsfiddle,我正在寻找调整验证器的默认值,让select2看起来统一

http://jsfiddle.net/z49mb6wr/

解决方法

I tried searching other SO’s,but all of these use the 3.5.xx version of select2

各种版本没有秘密配方;你只需要弄清楚你的情况.这意味着您需要检查呈现的DOM,以便了解要定位的元素以及如何定位它们.

我不认为以下代码适合您;这只是一个如何攻击这种情况的例子.

>编写面向渲染的Select2元素的CSS.因此,只要父容器具有类has-error,Select2元素就会被设置为样式.

.has-error .select2-selection {
    border: 1px solid #a94442;
    border-radius: 4px;
}

>要在Select2元素之后显示错误消息,只需要在errorPlacement选项中使用另一个条件以及一些jQuery DOM遍历.

errorPlacement: function (error,element) {
    if (element.parent('.input-group').length) { 
        error.insertAfter(element.parent());      // radio/checkBox?
    } else if (element.hasClass('select2')) {     
        error.insertAfter(element.next('span'));  // select2
    } else {                                      
        error.insertAfter(element);               // default
    }
}

>最后,由于与Select2的交互没有jQuery Validate插件自动捕获的任何事件,因此您必须编写自定义事件处理程序并以编程方式触发验证.

$('.select2').on('change',function() {
    $(this).valid();
});

工作演示:http://jsfiddle.net/z49mb6wr/1/

猜你在找的Bootstrap相关文章