У меня проблема с выпадающим списком,
Мне нужно изменить страницу местоположения, когда опция выбрана с использованием атрибута value value, но первый элемент option не работает,
Это HTML-код:
<form>
<select class='language-select' name='URL' id='URL'>
<option value="index.php?lan=EN" selected> English</option>
<option value="index.php?lan=FR">Français</option>
</select>
</form>
и это функция Js:
$('#URL').on('change', function(event){
event.preventDefault();
event.stopPropagation();
var $this = $(this);
window.location.href = $(this).val();
alert($(this).val());
});
также есть ошибка «необработанное исключение: недостаточно памяти»
Одна вещь, когда я добавляю пустой элемент option, он работает хорошо, я могу переключаться между двумя ссылками: index.php? Lan = FR и /index.php?lan=EN
Спасибо
Ваш HTML отмечает первый option
как selected
не важно что. Так, например, когда загружается французская страница, ваш выпадающий список все еще говорит «английский». Вместо этого вам нужно при загрузке страницы определить, какой вариант следует выбрать. Вы можете использовать такую функцию:
function GetURLParameter(sParam)
{
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam)
{
return sParameterName[1];
}
}
}
И ваша разметка будет:
<form>
<select class='language-select' name='URL' id='URL'>
<option id="EN" value="index.php?lan=EN"> English</option>
<option id="FR" value="index.php?lan=FR">Français</option>
</select>
</form>
Наконец, в вашей функции jQuery on ready вы должны иметь:
$(function() {
var lan = GetURLParameter('lan');
$('#' + lan).prop('selected', true);
});
Надеюсь, поможет!
Других решений пока нет …