0
<Select id="amount" onchange="document.formName.submit(); updateCost();">
   <option id="0" value = "0"> Select amount ... </option>
   <option id="1" value = "2000"> $2000 </option>
   <option id="2" value = "3000"> $3000 </option>
   <option id="3" value = "4000"> $4000 </option>
   <option id="4" value = "5000"> $5000 </option>
</Select>

<Select id="duration" onchange="document.formName.submit(); updateCost();">
   <option id="1" value="2 years"> 2 years </option>
   <option id="2" value="6 years"> 6 years </option>
   <option id="3" value="Lifetime"> Lifetime </option>
</Select>

function updateCost() {      
  var rate = 0;
  if(document.formName.plan[p].checked) {
    if(value('coverageUser').indexOf('Enrolled') > -1){
       rate = getRate();    
    }
    payCycle = 1;
    document.formName.cost.value = formatCurr((rate) * payCycle);
  }    
}

これらの2つの選択ボックスがあり、最初からオプションを選択すると、コストが正しく更新されます。しかし、金額を選択した後、デフォルト値がである2番目の選択ボックスから期間を選択することになっています2 years。しかし、値をに変更すると6 years、コストは更新されますが、選択ボックスオプションはにとどまらず6 years、に戻り2 yearsます。2番目の選択ボックスで選択したオプションを保持し、コストを正しく更新するにはどうすればよいですか?

4

2 に答える 2

1

で送信しているため、選択ボックスの状態は保持されませんonchange()。変更のたびにページがリロードされます。両方から削除してみてくださいselect

それに加えて、あなたは間違った方法で使用しています:同じページに同じものを2回id持つことはできません。id次のようなものを試してください。

    <option value="1"> 2 years </option>
    <option value="2"> 6 years </option>
    <option value="3"> Lifetime </option>
于 2012-06-27T01:22:00.833 に答える
1

フォームの送信後にページを返す場合:

  • ユーザーが選択したオプションを次のselected属性でマークします。

    <select id="duration">
        <option value="2 years"> 2 years </option>
        <option value="6 years" selected> 6 years </option>
        <option value="Lifetime"> Lifetime </option>
    </select>
    
  • updateCost()ページの読み込み時に呼び出す:

    window.onload = updateCost;
    

    window.onloadまたは、すでに持っている場合は関数に追加します。

    window.onload = function() {
        ...
        updateCost();
    };
    
于 2012-06-28T06:55:16.603 に答える