使用Internet Explorer的Jquery选择框问题

时间:2010-03-01 16:33:11

标签: javascript jquery internet-explorer

好吧,这可能是一个非常奇怪的问题。我正在编写一个Web应用程序,我想更改某个选择框的值:

<select name="type" class="type">
<option value="word">word</option>
<option value="digit">digit</option>
<option value="letter">letter</option>
<option value="single">single character</option>
<option value="space">space</option>
</select>

在我的代码中我有这个:

switch ( target ) {
case "d":
$("select").val('digit');
break;
case "w":
$("select").val('word');
break;
case "s":
$("select").val('space');
break;
}

这是问题所在。此代码在所有浏览器中都可以正常工作...除了IE之外。 Internet Explorer(8,如果你很好奇)除了$(“select”)。val(“digit”)部分之外,它们都正确处理它们。由于某种原因,它不会改变价值。 javascript解析器在交换机中正确导航到该情况,但它拒绝更改该情况的选择框的值。有人有什么想法吗?

2 个答案:

答案 0 :(得分:5)

你试过吗

$('select').find('option[value=digit]').prop('selected', true); // and etc.

代替?

编辑以及我自己也可以尝试一下,因为那只是我,但是看看jQuery源代码它无论如何都会为你做这件事。 (也就是说,jQuery不只是尝试在<select>标签上设置“value”属性,我觉得它在FF中工作,但不适用于IE。)

编辑更多以及我设置了一个测试页面,它在FF和IE8中都适用于我。您可以在此处查看我的测试页:http://gutfullofbeer.net/select.html

编辑 - 2012年7月12日 - .prop()现在是首选(jQuery 1.6),所以我更新了示例。

答案 1 :(得分:0)

您可以尝试将“已选择”一词添加到要显示的选项中,而不是更改选择标记的值。你想要看起来像你想要的选项的HTML ...

<option selected value="word">word</option>

标签中的单词无关紧要。