1

我有一个选择:

<select id="selectlang">
  <option value="en" selected>English</option>
  <option value="de">Deutsch</option>
</select>

现在,我想通过检查浏览器的语言来设置默认值。

var lang = window.navigator.userLanguage || window.navigator.language;

如何使用 jQuery 修改选项的选择?

4

7 回答 7

4

你可以做:

$("#selectlang").val(lang.split('-')[0]);

小提琴

于 2013-05-09T12:28:14.260 回答
2
var lang = window.navigator.userLanguage || window.navigator.language;

if(lang === 'en-US')
    $('#selectlang').val('en');

另外值得注意的是,IE(当然)不支持这个属性

于 2013-05-09T12:27:57.827 回答
1

您可以像这样使用 jQuery 更改选择值:

$("#selectlang").val(lang);

但很可能您需要验证var lang = window.navigator.userLanguage || window.navigator.language;

于 2013-05-09T12:27:55.243 回答
1

您可以使用jQuery 的 val() 函数选择选择框的值:

$("#selectlang").val("en");
于 2013-05-09T12:28:48.823 回答
1

以下代码对您有用,但您必须更改选项 kile en => en-US 的值,因为var lang = window.navigator.userLanguage || window.navigator.language;将以en-US格式返回语言代码

$("#selectlang").val(lang );
于 2013-05-09T12:29:09.313 回答
0
$('option:selected').attr('selected', false);
$('option[value="' + lang + '"]').attr('selected', true)

http://jsfiddle.net/nkVmV/2/

于 2013-05-09T12:27:30.760 回答
0

你有两个问题需要解决:

  1. 您需要能够解析window.navigator.language可以返回的多个可能值。
  2. 您需要select相应地更改选项。

解析语言字符串

第一个问题需要一个(非常稍微)比测试 if 更复杂的解决方案lang == "en"

英语可以用 表示en,但也可以是en-us(美式英语)、en-gb(英国)等。类似地,德语可以是dede-ch(瑞士)、de-at(奥地利)等。 这里有一个有用的潜在值列表

因此,如果您仅测试lang. 最好的解决方案似乎是只测试 , 的前两个字符lang,使用lang.substr(0, 2).

调整选择的选项#selectlang

正确解析语言字符串后,您可以option使用val().

把两者放在一起

var lang = window.navigator.userLanguage || window.navigator.language;

$("#selectlang").val(lang.substr(0, 2));
于 2013-05-09T12:37:09.193 回答