我有一个下拉列表<select>
元素从50个状态列表中选择状态,我选择第一个值,保存它,并在DOM中显示值。我更改并选择第5个值,保存它显示DOM中的值更新。现在回来我选择第二个值,然后保存它。它没有保存DOM中的值,而是显示之前选择的第5个值。我检查了不同的值,发现在选择任何更高的索引值后,选择返回,较低的值不会影响DOM,因此我没有在POST中获得正确的值。
这是我在change
上调用的功能。
function updateDOM(inputField) {
var elementId = inputField;
if (inputField.type == "select-one") {
var prev_select = inputField.selectedIndex;
$('#'+inputField.id+' option').each(
function() {
$(this).removeAttr('selected');
}
);
document.getElementById(elementId.id).selectedIndex = prev_select;
if (browserVersion == 9) {
document.getElementById(elementId.id)
.options[prev_select].setAttribute("selected","selected");
}
else {
document.getElementById(elementId.id)
.options[prev_select].setAttribute("selected","selected");
}
document.getElementById(elementId.id).value
= document.getElementById(elementId.id).options[prev_select].value;
}
HTML
<select id="abc" name="abc" onchange="javascript:updateDOM(this);" class="required" >
<option name="" value="" title="null" selected ></option>
<option name="AK" value="Alaska" title="null" >Alaska</option>
<option name="AL" value="Alabama" title="null" >Alabama</option>
<option name="AR" value="Arkansas" title="null" >Arkansas</option>
<option name="AZ" value="Arizona" title="null" >Arizona</option>
</select>
答案 0 :(得分:0)
首先,为什么不使用jQuery的“:selected”选择器,你还在使用它?另外,为什么你只使用一次jQuery? 我建议用jQuery风格来做这件事(对不起,我不太确定你要在你的代码中做什么):
P.S。这些条件有什么区别?
if (browserVersion == 9) {
document.getElementById(elementId.id)
.options[prev_select].setAttribute("selected","selected");
}
else {
document.getElementById(elementId.id)
.options[prev_select].setAttribute("selected","selected");
}