如何更改选择选择使用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的选择?
答
$('option:selected').attr('selected', false);
$('option[value="' + lang + '"]').attr('selected', true)
答
你可以像这样使用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。
答
下面的代码会为你工作,但你必须更改选项的值kile zh => en-US,因为var lang = window.navigator.userLanguage || window.navigator.language;
将返回中的语言代码格式
$("#selectlang").val(lang);
答
你有两个问题要解决:
- 你需要能够解析
window.navigator.language
可以返回多个可能的值。 - 您需要相应地更改
select
选项。
解析语言字符串
的第一个问题需要比如果lang == "en"
测试(非常轻微)更复杂的解决方案。
英语可以通过en
来表示,但它也可以是en-us
英语(美国),en-gb
(英国)等类似的德国可以de
,de-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));
我越觉得这一个,坏它得到。我会避免完全**使用这个属性**,除非你有一个真正具体的用例,并确切地知道你的用户将在哪个浏览器。最后的手段,这已被回答[非常彻底](http:// stackoverflow的.com /问题/ 1043339/JavaScript的用于检测浏览器语言偏好)。 – jterry 2013-05-09 14:09:01
val()函数非常稳定。没有像val(“xx”)这样的现有值只需设置第一个选项。花在if语句上的时间似乎是不必要的。 – ceving 2013-05-09 14:55:41