2

50の状態のリストから状態を選択するためのドロップダウン<select>要素があり、最初の値を選択して保存し、その値をDOMに表示します。5番目の値に変更して選択し、保存するとDOMの値の更新が表示されます。ここで、2番目の値を選択して保存しています。値は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>
4

1 に答える 1

0

まず、とにかく使っているjQueryの「:selected」セレクターを使ってみませんか?また、なぜ jQuery を 1 回だけ使用しているのですか? jQuery スタイルで行うことをお勧めします (申し訳ありませんが、コードで正確に何をしようとしているのかよくわかりません)。

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

PS これらの条件の違いは何ですか?

   if (browserVersion == 9) {
      document.getElementById(elementId.id)
         .options[prev_select].setAttribute("selected","selected");
   }
   else {
      document.getElementById(elementId.id)
         .options[prev_select].setAttribute("selected","selected");
   }
于 2012-11-21T16:20:42.267 に答える