Мое приложение основано на Python 3.4 и Flask, но мне нужно использовать JavaScript для динамического изменения значений скрытых полей. Я не знаком с JavaScript и не знаю, почему мой код не работает.Изменить несколько скрытых полей на выбор радио
В одном из моих шаблонов У меня есть очень простой вид оплаты, который позволяет пользователю выбрать одну пачку кредитов с помощью радиокнопки (я раздел на CSS и действие формы):
<form>
<input id="amount" value="price_list.price1" type="radio" name="amount">
<input id="amount" value="price_list.price2" type="radio" name="amount">
<input id="amount" value="price_list.price3" type="radio" name="amount">
<input id="amount" value="price_list.price4" type="radio" name="amount">
<input id="item_name" type="hidden" name="item_name" value="">
<input id="item_description" type="hidden" name="item_description" value="">
<input id="custom_int1" type="hidden" name="custom_int1" value=0>
<input id="payment" type=submit value=Payment>
</form>
" price_list.price1 "относятся к динамической цене, установленной системой. Это изменяется ежечасно, но каждая из записей указывает на определенное количество кредитов.
Из-за требований обработчика платежей, который я использую, мне нужно изменить три скрытых поля в зависимости от выбранного элемента: item_name, item_description и custom_int1 (который представляет собой количество купленных кредитов).
Я ссылается на следующие ответы:
- Dynamically Change Multiple Hidden Form Fields
- Setting a form variable value before submitting
- Jquery Onclick Change hidden parameter and submit
То, что я в конечном итоге с является попытка использовать JQuery, чтобы изменить значения. Код выглядит следующим образом:
<script>
$("#amount").change(function() {
// Get a local reference to the JQuery-wrapped select and hidden field elements:
var sel = $(this);
var set_name = $("input[name='item_name']");
var set_description = $("input[name='item_description']");
var set_creds = $("input[name='custom_int1']");
// Get the selected option:
var opt = sel.children("[value='" + sel.val() + "']:first");
// Set the values
if (opt.value=={{ price_list.price1 }}) {
set_name.value = '1 Credit';
set_description.value = '1 Credit';
set_creds.value = 1;
} else if (opt.value=={{ price_list.price5 }}) {
set_name.value = '5 Credits';
set_description.value = '5 Credits';
document.getElementById('custom_int1').value = 5;
} else if (opt.value=={{ price_list.price10 }}) {
set_name.value = '10 Credits';
set_description.value = '10 Credits';
set_creds.value = 10;
} else if (opt.value=={{ price_list.price25 }}) {
set_name.value = '25 Credit';
set_description.value = '25 Credit';
set_creds.value = 25;
} else if (get_amount.value=={{ price_list.price50 }}) {
set_name.value = '50 Credits';
set_description.value = '50 Credits';
set_creds.value = 50;
};
});
</script>
Я добавил сценарий в нижней части моего шаблона прямо перед <body>
тега.
Скрипт не работает, чтобы вообще изменить скрытые поля. Любая помощь будет очень признательна.
Благодаря Алекс, это работает отлично! Я также хочу добавить, что мне нужно было переместить скрипт, прежде чем он сработает. Первоначально это было в нижней части кода непосредственно перед тегом body, но мне нужно было переместить его вправо после элемента 'form'. –