选择和取消选择不在IE9中工作?

时间:2012-11-21 15:16:25

标签: javascript jquery html

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

1 个答案:

答案 0 :(得分:0)

首先,为什么不使用jQuery的“:selected”选择器,你还在使用它?另外,为什么你只使用一次jQuery? 我建议用jQuery风格来做这件事(对不起,我不太确定你要在你的代码中做什么):

http://jsfiddle.net/msLXt/1/

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");
   }