我的下拉列表中存在问题,
我需要在使用值选项属性选择选项时更改位置页面,但第一个选项元素不起作用, 这是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());
});
也有错误&#39;未被捕获的例外:内存不足&#39;
有一件事,当我添加一个空选项元素时效果很好,我可以在两个链接之间切换:index.php?lan = FR和/index.php?lan=EN
由于
答案 0 :(得分:0)
无论如何,您的html都会将第一个option
标记为selected
。因此,例如,当加载法语页面时,您的下拉列表仍然显示&#34;英语&#34;。相反,您需要做的是检测页面加载应该选择哪个选项。你可以使用这样的函数:
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);
});
希望它有所帮助!