Передача определенного значения для скрытого поля с помощью javascript

Я работаю над центром предпочтений электронной почты, и у пользователя есть 4 варианта: 3 варианта для частоты рассылки и последний вариант - отказаться от подписки. У меня есть два разных поля, которые передает моя форма - частота электронной почты и статус электронной почты. У меня проблемы с полем статуса электронной почты.

Для переключателей 1-3 я хочу, чтобы он отправлял сообщение электронной почты status = "I", а также частоту отправки электронной почты: "Все", "Еженедельно" или "Ежемесячно"

Для последнего переключателя я хочу, чтобы он отправлял сообщение электронной почты status = "O"

Кажется, я не могу заставить оба работать - либо он передает только I, а затем переключатель «Отменить подписку» не работает, либо в статусе электронной почты будет отправлено O для неподтвержденного, но затем нулевые значения для кнопок 1-3.

Ниже приведен базовый код, с которым я работаю.

<input type="radio" name="EMAIL_FREQUENCY_STATUS" value="W" id="EMAIL_FREQUENCY_STATUS"  >Weekly
<input type="radio" name="EMAIL_FREQUENCY_STATUS" value="M" id="EMAIL_FREQUENCY_STATUS"> Monthly
<input type="radio" name="EMAIL_FREQUENCY_STATUS" value="A" id="EMAIL_FREQUENCY_STATUS"> All


<input type="radio" name="EMAIL_STATUS" value="O" id="EMAIL_STATUS"> Unsubscribe!

<input name="Update" type="image" value="Send" src="update_btn.jpg" alt="Update" >

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

Обновление 7/11:

Вот один вариант кода, который я пробовал ...


<input type="radio" name="EMAIL_Weekly" value="W" id="EMAIL_Weekly"  onClick="document.getElementById('EMAIL_STATUS').value=I"/>Send me 1 email per week

 <input type="radio" name="EMAIL_Monthly" value="M" id="EMAIL_Monthly" onClick="document.getElementById('EMAIL_STATUS').value=I"/> Send me 1 email per month.

 <input type="radio" name="EMAIL_All" value="A" id="EMAIL_All" onClick="document.getElementById('EMAIL_STATUS').value=I"/> Send me all news, sales & offers. 

 <input type="radio" name="EMAIL_STATUS" value="O" id="EMAIL_STATUS" onClick="document.getElementById('EMAIL_STATUS').value=O"/>Unsubscribe me from all emails.


<input name="Update" type="image" value="Send" src="update_btn.jpg" alt="Update" >


 <input type="hidden" name="EMAIL_STATUS" value="" id="EMAIL_STATUS" />



person QA Test    schedule 11.07.2013    source источник
comment
Пожалуйста, покажите хотя бы одну из ваших попыток, чтобы мы могли объяснить, в чем вы ошибаетесь. А где скрытое поле в вашей форме?   -  person Barmar    schedule 11.07.2013
comment
Все входы в наборе переключателей должны иметь одно и то же имя. Нажатие на кнопку «Отписаться» не отключит другие кнопки, потому что у них другое имя.   -  person Barmar    schedule 11.07.2013
comment
И у вас есть повторяющиеся идентификаторы, что недопустимо.   -  person Barmar    schedule 11.07.2013
comment
Я добавил версию кода, которую пытался использовать. Если все переключатели должны иметь одно и то же имя, как вы предлагаете мне сделать этот центр предпочтений? Мне нужны кнопки частоты рассылки электронной почты, а затем кнопка отмены подписки.   -  person QA Test    schedule 11.07.2013
comment
Если я изменил кнопки частоты рассылки на разные значения ... есть ли способ передать статус электронной почты = I для кнопок 1-3, а затем просто статус электронной почты = O только для кнопки отмены подписки?   -  person QA Test    schedule 11.07.2013


Ответы (1)


<script>
function update_permission(perm) {
  document.getElementById('EMAIL_PERMISSION_STATUS').value = perm;
}
</script>

<form ...>
    <input type="radio" name="EMAIL_FREQUENCY_STATUS" value="W" onclick="update_permission('I')"/>Send me 1 email per week
    <input type="radio" name="EMAIL_FREQUENCY_STATUS" value="M" onclick="update_permission('I')"/> Send me 1 email per month.
    <input type="radio" name="EMAIL_FREQUENCY_STATUS" value="A" onclick="update_permission('I')"/> Send me all news, sales & offers. 
    <input type="radio" name="EMAIL_FREQUENCY_STATUS" value="O" onclick="update_permission('O')"/>Unsubscribe me from all emails.

    <input name="Update" type="image" value="Send" src="update_btn.jpg" alt="Update" >
    <input type="hidden" name="EMAIL_PERMISSION_STATUS" value="" id="EMAIL_PERMISSION_STATUS" />
</form>

Я избавился от атрибутов id всех переключателей; они были дубликатами и, вероятно, не нужны. Я им всем дал одно и то же название - при отписке нет частоты, поэтому стоит снять галочку с частоты. Радиокнопка с одним выбором не имеет смысла; если вы не хотите, чтобы он был частью группы, это должен быть флажок, а не переключатель.

Лично я не вижу смысла в скрытом поле. Не могли бы вы сделать то же самое в коде сервера?

person Barmar    schedule 11.07.2013