我有一个下拉<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>