下拉第一个选项值不起作用

时间:2015-05-20 22:38:41

标签: php jquery location html-select

我的下拉列表中存在问题,

我需要在使用值选项属性选择选项时更改位置页面,但第一个选项元素不起作用, 这是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

由于

1 个答案:

答案 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);
});

希望它有所帮助!