繁体   English   中英

选中时禁用选择选项值

[英]disable select option value when selected

我正在使用此代码。 但是我面临一个问题,当我在第一个选择框中选择“一个”,然后在第二个中选择“两个”,并且当我再次选择第二个值为“三”但值“两个”保持禁用时:

HTML代码

// one
<select>
    <option>Select</option>
    <option value="1" >one</option>
    <option value="two">two</option>
    <option>three</option>
</select>
//two
<select>
    <option>Select</option>
    <option value="1" >one</option>
    <option value="two">two</option>
    <option>three</option>
</select>

这是JavaScript代码

$(document).ready(function(e) {

    var $selects = $('select#players');
    available = {};

    $('option', $selects.eq(0)).each(function (i) {
        var val = $.trim($(this).text());
        available[val] = false;
    });

    $selects.change(function () {
        var $this = $(this);
        var selectedVal = $.trim($this.find('option:selected').text());

        available[selectedVal] = true;

        $selects.not(this).each(function () {
            $('option', this).each(function () {
                var optText = $.trim($(this).text()),
                    optCheck = available[optText];
                if(optCheck) {
                    $(this).prop('disabled', true);
                }
                else {
                     $(this).prop('disabled', false);
                }
            });
        });
    }).change(); // Trigger once to add options at load of first

});

假设您希望禁用其他选择框中的值,那么这里是一个示例。

<select>
    <option value="" selected="selected">Select</option>
    <option value="1">one</option>
    <option value="2">two</option>
    <option value="3">three</option>
</select>
<select>
    <option value="" selected="selected">Select</option>
    <option value="1">one</option>
    <option value="2">two</option>
    <option value="3">three</option>
</select>

$(document).ready(function (e) {
    var $selects = $('select');
    $selects.change(function () {
        var value = $(this).val();
        if (value == "") {
            return false;
        }
        $selects.not(this).each(function () {
            $('option', this).each(function () {
                var sel = $(this).val();
                if (sel == value) {
                    $(this).prop('disabled', true);
                } else {
                    $(this).prop('disabled', false);
                }
            });
        });
    }).change(); // Trigger once to add options at load of first

});

和工作的小提琴

很难理解您在这里的要求。 我假设您想知道当在任一选择框中都选择一个选项时如何在两个选择框中禁用该选项。 我想的情况是,您在两个选择框中显示一个球员列表,而当一队选择其中一个球员时,另一支球队无法选择同一球员吗?

这是一个有效的小提琴: http : //jsfiddle.net/theoutlander/MT5th/ 我不喜欢jQuery,所以我在香草JS中做到了这一点。

// one
<select id="s1" onchange="handleSelection(this, s2)">
    <option>Select</option>
    <option value="1">one</option>
    <option value="two">two</option>
    <option>three</option>
</select>

//two
<select id="s2" onchange="handleSelection(this, s1)">
    <option>Select</option>
    <option value="1" >one</option>
    <option value="two">two</option>
    <option>three</option>
</select>

function handleSelection(source, dest) {
    source.options[source.selectedIndex].disabled=true;
    dest.options[source.selectedIndex].disabled=true;
}

您的javascript的第一行...

var $selects = $('select#players');

...实际上并没有选择任何东西。 您需要将ID“玩家”添加到您的选择元素之一,或更改选择器。

另外,我无法弄清楚您实际上要做什么。 您能否更清楚地说明您的目标是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM