Отмените выбор всех вариантов выбора HTML в элементе управления, который не допускает множественный выбор - PullRequest
2 голосов
/ 21 сентября 2010

У меня есть веб-страница с несколькими элементами управления HTML Select, которые разрешают множественный выбор.Рядом с каждым элементом управления есть кнопка «Очистить», которая отменяет выделение всех выделенных элементов в элементе управления, при этом щелчок мыши выглядит примерно так:

<input type=button value="Clear" size=5 onclick="selectOptions('n.MyControl', false)">

Вызванный код Javascript выглядит следующим образом:

function selectOptions(controlName, bSelectItems)
{
    for (i=0; i < document.myForm[controlName].options.length; i++)
    {
        document.myForm[controlName].options[i].selected = bSelectItems;
    }

}

Он действительно хорошо работает с элементами управления Select, которые допускают множественный выбор, но я просто добавил элемент управления Select, который не допускает множественный выбор (т.е. не имеет атрибута «множественный»), и этот код не позволяеточисти это.Если я добавлю атрибут «несколько», кнопка «Очистить» снова начнет работать, поэтому я знаю, что это как-то связано с тем, что я не разрешаю выбирать несколько элементов.

Мой вопрос: почемуприведенный выше код не работает и, что более важно, как я могу очистить свой новый элемент управления Select в JavaScript?

Ответы [ 2 ]

4 голосов
/ 21 сентября 2010

Причина, по которой ваш код не работает, заключается в том, что вы пытаетесь перебрать каждую опцию и что-то сделать, но, поскольку (как вы сказали) атрибут не указан, он не позволяет вам изменять несколько вариантов.

Что касается исправления, вы можете попытаться получить выбранную опцию, а затем просто отменить выбор этой опции.

Обновление: Я не знаю наверняка, что это идеальное решение, но, похоже, оно работает для меня в IE8.

document.getElementById('myselect').selectedIndex = -1;

Конечно, вы можете получить элемент select в зависимости от того, что вам больше подходит, но просто установите для атрибута selectedIndex значение -1.

1 голос
/ 21 сентября 2010

Нет такого понятия, как очищенная единичная коробка - <select>. Одна опция будет всегда , если есть какие-либо опции в выборке. Если ни в одном из вариантов не задано значение selected при первой загрузке, будет автоматически выбран первый параметр.

Обычный подход состоит в том, чтобы иметь первый вариант в качестве фиктивного параметра, например <option value="">(Please select a thing)</option>, и сбросить его до (с select.selectedIndex= 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...