jquery - 引导多选 : How to change backgroung color if None selected

标签 jquery bootstrap-multiselect

我在网络表单中使用了 Bootstrap Multiselect。我对所有输入/选择字段进行了验证检查。如果表单提交时带有任何空输入或禁用选项或无选择,则所有空字段都会将背景颜色更改为红色似乎所有输入和选择都工作正常。但是,多选的选择我没有改变颜色。以下是仅多选的代码部分:

if($("#example-optionClass").val() == null){
    $("#example-optionClass").css('background-color','red');
}
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Bootstrap Example</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
        <!-- Include the plugin's CSS and JS: -->
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.js"></script>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" type="text/css"/>
        <script type="text/javascript">
            $(document).ready(function () {
                $('#example-optionClass').multiselect({
                    optionClass: function (element) {
                        var value = $(element).val();

                        if (value % 2 == 0) {
                            return 'even';
                        }
                        else {
                            return 'odd';
                        }
                    }
                });
            });
        </script>
        <style type="text/css">
            #example-optionClass-container .multiselect-container li.odd {
                background: #eeeeee;
            }
        </style>
    </head>
    <body>

        <div class="container">
            <h2>Bootstrap Multiselect Test</h2>
            <p>I want to change the Multiselect <b>background color</b>  If 'None Selected'</p>            
            <div id="example-optionClass-container">
                <select id="example-optionClass" multiple="multiple">
                    <option value="1">Option 1</option>
                    <option value="2">Option 2</option>
                    <option value="3">Option 3</option>
                    <option value="4">Option 4</option>
                    <option value="5">Option 5</option>
                    <option value="6">Option 6</option>
                </select>
            </div>
        </div>

    </body>
</html>

我需要为此编写什么简单的jquery?请帮忙。谢谢

最佳答案

function onchange_multi(){
  setTimeout(function(){ // use timeout because master script run and your script run
    var btn_def = $("#example-optionClass-container").find('.btn-default');
    if($("#example-optionClass").val() === null){
       btn_def.addClass('btn-danger')  //btn-danger default class of bootstrap
    }else{
       btn_def.removeClass('btn-danger')  
    }
  },50);
}


//onload
onchange_multi();

//onchange
$('#example-optionClass').on('change',function(){
  onchange_multi();
});
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <!-- Include the plugin's CSS and JS: -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" type="text/css"/>
<script type="text/javascript">
    $(document).ready(function() {
        $('#example-optionClass').multiselect({
            
            optionClass: function(element) {
                var value = $(element).val();
 
                if (value%2 == 0) {
                    return 'even';
                }
                else {
                    return 'odd';
                }
            }
        });
    });
</script>
<style type="text/css">
    #example-optionClass-container .multiselect-container li.odd {
        background: #eeeeee;
    }
</style>
</head>
<body>

<div class="container">
  <h2>Bootstrap Multiselect Test</h2>
  <p>I want to change the Multiselect <b>background color</b>  If 'None Selected'</p>            
  <div id="example-optionClass-container">
    <select id="example-optionClass" multiple="multiple">
        <option value="1">Option 1</option>
        <option value="2">Option 2</option>
        <option value="3">Option 3</option>
        <option value="4">Option 4</option>
        <option value="5">Option 5</option>
        <option value="6">Option 6</option>
    </select>
</div>
</div>

</body>
</html>

关于jquery - 引导多选 : How to change backgroung color if None selected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40460251/

相关文章:

javascript - 引导多选搜索从数据库获取值

jquery - 在 bootstrap-multiselect 中显示选择所有复选框并自定义 "None Selected"文本

jquery - jQuery ajax 接受 attrib 有什么意义?它实际上有什么作用吗?

twitter-bootstrap-3 - Bootstrap 多选刷新或重建不起作用

javascript - 提交表单时如何更改文本框的值?

javascript - jquery 自动完成 : how to handle special characters (& and ')?

javascript - bootstrap-multiselect 在表内不起作用

javascript - 根据jquery中的数据属性在bootstrap multiselect中选择值

jquery - 一个div在另一个之上?

javascript - 更改 "Choose File"按钮并继续显示文件名