如何更改选择选择使用jQuery

问题描述:

我有一个选择:如何更改选择选择使用jQuery

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

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

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

如何修改jQuery的选择?

你可以这样做:

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

Fiddle

$('option:selected').attr('selected', false); 
$('option[value="' + lang + '"]').attr('selected', true) 

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

你可以像这样使用jQuery改变选择值:

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

但最有可能你会需要验证的var lang = window.navigator.userLanguage || window.navigator.language;

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

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

也值注意,IE(当然)doesn't support this property

+0

我越觉得这一个,坏它得到。我会避免完全**使用这个属性**,除非你有一个真正具体的用例,并确切地知道你的用户将在哪个浏览器。最后的手段,这已被回答[非常彻底](http:// stackoverflow的.com /问题/ 1043339/JavaScript的用于检测浏览器语言偏好)。 – jterry 2013-05-09 14:09:01

+0

val()函数非常稳定。没有像val(“xx”)这样的现有值只需设置第一个选项。花在if语句上的时间似乎是不必要的。 – ceving 2013-05-09 14:55:41

可以使用jQuery's val() function选择一个选择框的值:

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

下面的代码会为你工作,但你必须更改选项的值kile zh => en-US,因为var lang = window.navigator.userLanguage || window.navigator.language;将返回中的语言代码格式

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

你有两个问题要解决:

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

解析语言字符串

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

英语可以通过en来表示,但它也可以是en-us英语(美国),en-gb(英国)等类似的德国可以dede-ch(瑞士),de-at(奥地利)等Here's a helpful list of potential values

因此,如果您只是测试lang的原始值,那么它不会起作用。最好的解决方案似乎是使用lang.substr(0, 2)仅测试lang的前两个字符。

调整的#selectlang

所选择的选项一旦你的语言字符串正确解析,您可以使用val()更改选定option

把这两者结合起来

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

$("#selectlang").val(lang.substr(0, 2));