Выберите onChange перейти на указанный URL, но должен оставаться доступным?

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

У меня есть несколько раскрывающихся списков выбора на веб-странице. Каждый из параметров этих выпадающих списков ссылается на другую страницу через определенную JS-функцию «gotosite (this)».

Итак, примером выпадающих списков может быть:

 <select onchange="gotothissite();">
    <option value="">Choose your destination</option>
    <option value="http://google.com">Google</option>
    <option value="http://yahoo.com">Yahoo</option>
    <option value="http://netflix.com">Netflix</option>
</select>
  

Клиент запросил, чтобы мы сделали доступными эти выпадающие списки. Прямо сейчас эти выпадающие списки недоступны для навигации с клавиатуры (особенно в IE), поскольку обработчик событий onchange немедленно запускается при первом выбранном пользователем параметре, который имеет непустое значение. НО!Клиент также хочет сохранить существующую функциональность для обычных пользователей, так что все, что им нужно сделать, это выбрать опцию, и он отправляет их на этот сайт без каких-либо дальнейших действий пользователя, необходимых.

Сначала я думал просто привязать onClick к тегам опций, но это не работает в IE.

Ответ №1:

  1. Замените элемент управления формой списком ( <ul> ) ссылок.
  2. Используйте JavaScript, чтобы скрыть его и добавить к нему префикс <button>
  3. Привяжите событие click к кнопке, которая переключает отображение списка.

Комментарии:

1. К сожалению, я не могу изменить выпадающие списки, они ДОЛЖНЫ быть выбраны.

2. Почему? Похоже, что они не используются в качестве selects.

3. Правильно. Но клиент очень непреклонен в том, что они остаются выбранными.

4. Итак, клиент требует, чтобы вы использовали неправильный инструмент для работы, а затем жалуется, почему инструмент не работает должным образом… отлично. Возможно, они говорят «выбрать», но имеют в виду «выпадающий» (вам следует перепроверить) или что они являются клиентом из ада и доставят больше проблем, чем они того стоят (в строгом финансовом выражении), и вам следует дистанцироваться от них.

5. Понятно. Чтобы дать вам некоторую перспективу, мы говорим здесь о государственном учреждении. Поверьте мне, мы пытались изменить их мнение. Это должен быть выбор, мы дважды проверили : (

Ответ №2:

Вы можете добавить форму вокруг поля выбора, которая перенаправит браузер на выбранный адрес. Также вам понадобится кнопка для отправки формы.

Комментарии:

1. Привет, Айдас. Проблема не в этом. Моя проблема в том, что IE запускает событие onchange при выборе, как только пользователь переходит к первому варианту в выборе.

2. Затем просто проверьте, есть ли значение != «» в gotothissite().

Ответ №3:

Я уверен, что это слишком поздно, чтобы быть полезным для исходного пользователя, но если кто-то еще найдет здесь ответ, возможно, стоит взглянуть на решение Кэмерона Адамса от 2004http://www.themaninblue.com/writing/perspective/2004/10/19 /.

Опять же, я отмечаю, что с событием change () от jQuery (см.http://api.jquery.com/change /), «событие откладывается до тех пор, пока элемент не потеряет фокус. Похоже, что он должен быть доступен в IE — хотя у меня нет средств для самостоятельного тестирования. Я думаю, вы могли бы также предоставить кнопку отправки, заключенную в теги noscript, чтобы обеспечить некоторую функциональность для пользователей без js.