好吧,这可能是一个非常奇怪的问题。我正在编写一个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解析器在交换机中正确导航到该情况,但它拒绝更改该情况的选择框的值。有人有什么想法吗?
答案 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>
标签中的单词无关紧要。