我有一个使用javascript函数动态创建的select选项。选择对象为
<select name="country" id="country">
</select>当执行js函数时,"country“对象是
<select name="country" id="country">
<option value="AF">Afghanistan</option>
<option value="AL">Albania</option>
...
<option value="ID">Indonesia</option>
...
<option value="ZW">Zimbabwe</option>
</select>并将“印度尼西亚”显示为默认选择的选项。注意:该选项中没有selected="selected"属性。
然后,我需要将selected="selected"属性设置为“印度尼西亚”,并使用下面的代码
var country = document.getElementById("country");
country.options[country.options.selectedIndex].setAttribute("selected", "selected");使用firebug,我可以看到“印度尼西亚”选项如下所示
<option value="ID" selected="selected">Indonesia</option>但在IE中失败(在IE 8中测试)。
然后我试着使用jQuery
$( function() {
$("#country option:selected").attr("selected", "selected");
});它在FFX和IE中都失败。
我需要“印尼”选项有selected="selected"属性,所以当我点击重置按钮,它将再次选择“印尼”。
更改js函数以动态创建"country“选项不是一个选项。该解决方案必须在FFX和IE中都有效。
谢谢
发布于 2011-01-04 12:03:44
问得好。您需要修改HTML本身,而不是依赖于DOM属性。
var opt = $("option[val=ID]"),
html = $("<div>").append(opt.clone()).html();
html = html.replace(/\>/, ' selected="selected">');
opt.replaceWith(html);代码获取印度尼西亚的option元素,克隆它并将其放入一个新的div (不在文档中)以检索完整的HTML:<option value="ID">Indonesia</option>。
然后执行字符串替换,将属性selected="selected"作为字符串添加,然后将原始选项替换为这个新选项。
我在IE7上进行了测试。在重置按钮正常工作的情况下可在此处查看:http://jsfiddle.net/XmW49/
发布于 2011-01-04 12:12:15
你想太多了:
var country = document.getElementById("country");
country.options[country.options.selectedIndex].selected = true;发布于 2012-12-05 03:12:00
您应该从relative option元素中设置所需的值,而不是修改HTML本身:
$(function() {
$("#country").val("ID");
});在本例中,"ID“是选项”印度尼西亚“的值。
https://stackoverflow.com/questions/4590311
复制相似问题