2012-06-18 14 views
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); 
    }  
} 

У меня есть эти два блока выбора, и, когда я выбираю вариант с первого раза, стоимость обновляется правильно. Но после выбора суммы я должен выбрать продолжительность из второго selectbox, где значение по умолчанию - 2 years. Но когда я меняю значение на 6 years, стоимость обновляется, но опция выбора окна не остается до 6 years, но меняется на 2 years. Как сохранить параметр, который я выбрал во втором поле выбора, а также правильно ли изменить стоимость?Select Box опция keep change

+2

Где функция updateCost()? – j08691

+4

Если вы отправляете форму при каждом изменении, то, предположительно, страница перезагружается, а поля выбора возвращаются к умолчанию. –

+0

вы не можете запустить некоторый javascript после отправки формы, так как submit приведет к обратному сообщению и перезагрузит страницу. – jbabey

ответ

1

Коды выбора не сохраняют свое состояние из-за отправки, которое вы делаете в onchange(). Это приведет к перезагрузке страницы при каждом изменении. Попробуйте удалить его из обоих select.

Кроме того, вы используете id неправильным способом: вы не можете иметь тот же самый id дважды на одной странице. Попробуйте что-то вроде этого:

<option value="1"> 2 years </option> 
    <option value="2"> 6 years </option> 
    <option value="3"> Lifetime </option> 
+0

Я согласен с tcurvelo в обеих точках, хотя дубликат ID не должен иметь никакого эффекта, пока вы не попытаетесь ссылаться на один из них со сценарием. Есть ли определенная причина, по которой вы хотите отправить onchange()? Если во время фазы выбора формы вы не можете избежать зависимостей на стороне сервера, вы должны быть в состоянии безопасно удалить эти подчинения. – grav3nimag3

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() на page:

    window.onload = updateCost; 
    

    Или добавить его в свой window.onload функции, если у вас уже есть:

    window.onload = function() { 
        ... 
        updateCost(); 
    }; 
    
Смежные вопросы