多个选择元素 - 从所有元素中选择一个选项时使用jQuery处理

时间:2016-03-01 08:37:24

标签: javascript jquery

我有两个选择元素和一些选项。我想要做的是用jquery处理这个问题,这样我只有在选项有值时才能得到它们的值。

 <div class="panel-heading">
        <select id="loading-by-tag">
            <option value="" disabled selected> -- Select Subject --</option>
            <option value="value1">Selection 1</option>
            <option value="value2">Selection 2</option>
        </select>

        <select id="loading-by-sub-tag">
            <option value="" disabled selected> -- Select Subject --</option>
            <option value="value1">Selection 1</option>
            <option value="value2">Selection 2</option>
        </select>
    </div>

如果我只想处理一个select元素,我使用.on('change', function()和select元素,它可以工作,但是有多个select元素我该怎么做。

2 个答案:

答案 0 :(得分:3)

您应检查所有selectedIndex元素的0是否不是select

&#13;
&#13;
$(document).on('change', 'select', function () {
    var allChanged = true;


    // check if there is any other select element which was not changed
    $('select').each(function () {
        if (this.selectedIndex == 0) {
            allChanged = false;
        }
    });

    // if all select elements have been changed
    if (allChanged) {
        alert('BOTH CHANGED');
    }

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="panel-heading">
        <select id="loading-by-tag">
            <option value="" disabled selected> -- Select Subject --</option>
            <option value="value1">Selection 1</option>
            <option value="value2">Selection 2</option>
        </select>

        <select id="loading-by-sub-tag">
            <option value="" disabled selected> -- Select Subject --</option>
            <option value="value1">Selection 1</option>
            <option value="value2">Selection 2</option>
        </select>
    </div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只是旁注,请使用.filter()

$('select').change(function() {
  var m = $(this).siblings('select').addBack();
  var n = m.filter(function(){
    return $(this).val() == null && $(this)
  });  
 if ( !n.length ) alert('both selected')
});

DEMO