Удалить раскрывающееся значение, выбранное в другом раскрывающемся меню

0

Я искал в Интернете какое-то время, и все же я не могу найти ответ, у меня есть три раскрывающихся меню на моем сайте.

Я использую их для принятия пользовательских настроек, чтобы пользователь мог контролировать вывод результатов.

Поэтому я хочу знать, возможно ли, чтобы значение было выведено из других 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>
Теги:
drop-down-menu

4 ответа

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 знанием того, что нужно вставить, когда он сбрасывается, потому что сделан новый выбор :)

  • 0
    Вы не должны использовать attr в этом случае: stackoverflow.com/questions/5874652/prop-vs-attr
  • 0
    Ooh! Я узнаю так много нового здесь.
Показать ещё 7 комментариев
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();
            }
        });
    });
});'
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);
                }
            });

        });

Это должно быть для вас.

  • 0
    не работал извините
0

Я считаю, что что-то подобное сделало бы трюк, учитывая HTML выше:

var $selects = $("select");

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

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

Это, очевидно, отключает дубликаты параметров, но это легко изменить, чтобы удалить их. Однако вы столкнетесь с небольшой проблемой, поскольку параметры "Предпочтения №" имеют одинаковое значение. Я бы рекомендовал либо сделать эти метки optgroup либо полностью удалить значения, и пометить их как отключенные с самого начала... так как вы не сможете их щелкнуть в первую очередь. Вы можете найти немного больше опций меток и разделителей ответы здесь.

пример

Ещё вопросы

Сообщество Overcoder
Наверх
Меню