Подтвердить что ты не робот

Перенаправление автоматически при выборе элемента из раскрывающегося списка выбора

Эта страница делает это так, как я хочу: http://www.web-source.net/javascript_redirect_box.htm

Но я хочу найти лучший способ использования jQuery, может ли кто-нибудь указать мне на хороший script, который использует jQuery для выполнения этого?

4b9b3361

Ответ 1

Для этого вам не требуется предварительно упакованный script, всего пару строк кода.

// get your select element and listen for a change event on it
$('#selectEl').change(function() {
  // set the window location property to the value of the option the user has selected
  window.location = $(this).val();
});

Ответ 2

Другие дали хорошие ответы о том, как это сделать, но...

Просто предупреждение, IE обрабатывает список select onChange очень по-другому, чем другие браузеры, когда кто-то перемещается по клавиатуре. Он подсчитывает каждое нажатие клавиши/клавиши вниз как событие onChange, что означает, что вы не можете перемещаться по списку выбора переадресации с клавиатуры, убивая доступность для пользователей, которые не могут использовать мышь. (Другие браузеры ждут события "enter" или вкладку из списка выбора, перед запуском onChange.) Я долгое время пытался взломать обходной путь для этого и никогда полностью не решил проблему.

Я не знаю, отвечает ли за это jQuery; надеюсь, это так, для вашего сайта, ради удобства.

Возможно, стоит выбрать список выбора, куда идти, а затем нажать кнопку рядом с ним, фактически активировать перенаправление. (Если вам не нужна доступность пользователей IE.)

Ответ 3

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

$(document).ready( function() {
   $('#select').change( function() {
      location.href = $(this).val();
   });
});

<select id="select">
    <option value="#">Select a location</option>
    <option value="location.htm">Location</option>
    <option value="other.htm">Other</option>
</select>

Ответ 4

с помощью jQuery:

$('#selectEl').bind("change keyup",function()
{
  // set the window location property to the 
  // value of the option the user has selected
  window.location = $(this).val();
});

работает для обычного изменения параметров и клавиш со стрелками.

Возможно, вы сможете использовать это расширение: http://plugins.jquery.com/project/mousewheel Еще не пробовал.:)

Есть также опции мыши, которые вы можете добавить для bind(). Перейдите по адресу: api.jquery.com/category/events/mouse-events/ Любая функция есть имя() для этой страницы, вы можете используйте его "имя" в bind() выше. Так же, как и я change() = > 'change' и mouseup() = > 'mouseup' - easy peasy:)

  • Мир!

Ответ 5

Простой ответ, как предлагает Даниэль, - вы не должны этого делать, это плохо для удобства и доступности.

Выбор поведения списка зависит от комбинации пользовательской ОС, браузера и пользовательских настроек (для обоих). Добавьте к этому тот факт, что событие onchange не реализовано стандартным способом в браузерах.

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

(Лично я перемещаюсь по сайтам, используя клавиатуру, и если это произойдет, я кричу)