删除从另一个下拉菜单中选择的下拉列表值

时间:2014-04-27 01:28:23

标签: javascript jquery html css drop-down-menu

我在网上搜索了一段时间但仍无法找到答案,我的网站上有三个下拉菜单。

我使用它们来接受用户首选项,以便用户可以控制结果的输出。

所以我想知道,如果将其中的一个选中,则可以从其他2个下拉列表中取出值。

例如,如果用户选择第一部电影,则不会出现在其他电影中。

这是我的下拉列表

<select id="pref1select">
<option value="P">Preference One</option>
    <option value="M">Movie</option>
    <option value="T">Tv</option>
    <option value="G">Games</option>
</select>
<select id="pref2select">
<option value="P">Preference Two</option>
    <option value="M">Movie</option>
    <option value="T">Tv</option>
    <option value="G">Games</option>
</select>
<select id="pref3select">
<option value="P">Preference Three</option>
    <option value="M">Movie</option>
    <option value="T">Tv</option>
    <option value="G">Games</option>
</select>

5 个答案:

答案 0 :(得分:2)

这会禁用它,但不会将其删除 小提琴:http://jsfiddle.net/p2SFA/1/


HTML :(已添加.preferenceSelect类)

<select id="pref1select" class="preferenceSelect">
    <option value="P">Preference One</option>
    <option value="M">Movie</option>
    <option value="T">Tv</option>
    <option value="G">Games</option>
</select>
<select id="pref2select" class="preferenceSelect">
    <option value="P">Preference Two</option>
    <option value="M">Movie</option>
    <option value="T">Tv</option>
    <option value="G">Games</option>
</select>
<select id="pref3select" class="preferenceSelect">
    <option value="P">Preference Three</option>
    <option value="M">Movie</option>
    <option value="T">Tv</option>
    <option value="G">Games</option>
</select>

jQuery的:

$(document).ready(function() {
    $(".preferenceSelect").change(function() {
        // Get the selected value
        var selected = $("option:selected", $(this)).val();
        // Get the ID of this element
        var thisID = $(this).prop("id");
        // Reset so all values are showing:
        $(".preferenceSelect option").each(function() {
            $(this).prop("disabled", false);
        });
        $(".preferenceSelect").each(function() {
            if ($(this).prop("id") != thisID) {
                $("option[value='" + selected + "']", $(this)).prop("disabled", true);
            }
        });

    });
});

如果你想删除它,你可能必须让jQuery知道在重置时要插入什么,因为有了新的选择:)

答案 1 :(得分:0)

我相信这样的事情可以解决上面的HTML:

var $selects = $("select");

$selects.on("change", function(){
    var value = this.value;

    $("option[value='" + value +"']", $selects).prop("disabled", true);    
});

这显然会禁用重复选项,但也可以轻松更改它们。但是,由于&#34;偏好#&#34;选项都具有相同的值。我建议您制作这些optgroup标签或完全删除这些值,并从一开始就将其标记为已禁用...因为您不应该首先点击它们。您可以在选项标签和分隔符上找到更多信息here

Example

答案 2 :(得分:0)

你应该试试这个:

  $(".preferenceSelect").on("change", function () {
            $(".preferenceSelect option").prop("disabled", false);
            var selectPref = $("option:selected", $(this)).val();
            var selectId = $(this).prop("id");
            $(".preferenceSelect option").each(function () {
                $(this).show();
            });
            $(".preferenceSelect").each(function () {
                if ($(this).prop("id") != selectId) {
                    $("option[value='" + selectPref + "']", $(this)).prop("disabled", true);
                }
            });

        });

这一定对你有用。

答案 3 :(得分:0)

这应该适合你:

$(document).ready(function() {
    $(".preferenceSelect").change(function() {
        // Get the selected value
        var selected = $("option:selected", $(this)).val();
        // Get the ID of this element
        var thisID = $(this).attr("id");
        // Reset so all values are showing:
        $(".preferenceSelect option").each(function() {
            $(this).show();
        });
        $(".preferenceSelect").each(function() {
            if ($(this).attr("id") != thisID) {
                $("option[value='" + selected + "']", $(this)).hide();
            }
        });
    });
});`

答案 4 :(得分:0)

请尝试以下操作,但没有任何问题。我还将标记为禁用的选项,而不是从其他下拉菜单中隐藏。

$( function() {
    courC();
});

function courC(){   
    var previous;

    $(".pSel").on('focus', function () {
        previous = this.value; 
    }).change(function() {
        var selected = $("option:selected", $(this)).val();
        var thisID = $(this).attr("id");

        $(".pSel option").each(function() {
            $(this).show();
        });

        $(".pSel").each(function() {
            var otid=$(this).attr("id");
            if (otid != thisID) {
                if( $('#'+otid).val() == selected){ $('#'+otid).val(''); } // this is required when you are viewing data once again after the form submission
                $("option[value='" + selected + "']", $(this)).attr("disabled", true);
            }

            $("option[value='" + previous + "']", $(this) ).attr("disabled", false); // this will help to reset the previously selected option from all dropdown

        });

        previous =  $('#'+thisID).val();
    });
}