Перенаправление по опции выбора в поле выбора
В данный момент я использую это:
<select ONCHANGE="location = this.options[this.selectedIndex].value;">
он перенаправляет меня на местоположение внутри значения параметра. Но это работает не так, как ожидалось.. означает, что если я нажму на первый вариант выбора, то действие onChange не будет выполняться. Я думал о javascript, но, думаю, у вас появятся хорошие предложения. Итак, как я могу заставить его работать, если я нажму на каждый параметр, он перенаправит меня на это значение?
Ответы
Ответ 1
Поскольку первый параметр уже выбран, событие изменения никогда не запускается. Добавьте пустое значение в качестве первого и проверьте наличие пустого места в назначении местоположения.
Вот пример:
<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
<option value="">Select...</option>
<option value="http://google.com">Google</option>
<option value="http://yahoo.com">Yahoo</option>
</select>
И вот скрипка: http://jsfiddle.net/bL5sq/
Ответ 2
Я бы настоятельно рекомендовал отказаться от встроенного JavaScript, чтобы что-то вроде следующего:
function redirect(goto){
var conf = confirm("Are you sure you want to go elswhere?");
if (conf && goto != '') {
window.location = goto;
}
}
var selectEl = document.getElementById('redirectSelect');
selectEl.onchange = function(){
var goto = this.value;
redirect(goto);
};
JS Fiddle demo (404 жертва Linkrot).
JS Fiddle demo через Wayback Machine.
Forked JS Fiddle для текущих пользователей.
В надписи в JS Fiddle первый параметр не имеет назначенного значения, поэтому нажатие на него не должно вызывать функцию, чтобы что-либо сделать, и поскольку это значение по умолчанию, щелкнув select
, а затем выбрав первый по умолчанию option
не будет запускать событие change
в любом случае.
Обновление:
Последние URL-адреса перенаправления (2017-08-09) требуют замены из-за ошибок в отношении смешанного контента между JS Fiddle и обоими доменами, а также для обоих доменов, требующих "sameorigin" для оснащенного контента. - Альберт