Мне нужна помощь в том, чтобы предлагать правильный способ сделать это. В принципе, у меня есть одно поле в базе данных под названием "SupportRenewMonth", и оно будет хранить количество месяцев.
В форме отправки у меня есть раскрывающийся список вариантов как 12 месяцев, 36 месяцев или другой (см. Ниже коды). Когда пользователь нажимает "Другое", я попытаюсь отобразить окно ввода, где пользователю нужно ввести число месяцев вручную (не выясните, как скрыть/показать текстовое поле, но я буду)
<select name="SupportRenewMonth" id="SupportRenewMonth">
<option value="12">12 Month</option>
<option value="36">36 Month</option>
<option value="Other">Other</option>
</select>
Enter Month Number:
<input type="text" name="SupportRenewMonthManual" id="SupportRenewMonthManual">
Проблема в том, что мне нужно убрать либо поле выбора "SupportRenewMonth", либо текстовое поле "SupportRenewMonthManual". Есть ли способ сообщить форме передать значение из окна SupportRenewMonthManual в SupportRenewMonth, а затем отправить форму. Таким образом, мне не нужно изменять свой код ASP, чтобы попытаться захватить оба, а затем разобраться, какое значение хранить в базе данных.
Я считаю, что что-то вроде этого должно работать как для обновления ваших значений, так и для скрытия поля.
HTML
<select name="SupportRenewMonth" id="SupportRenewMonth">
<option value="12">12 Month</option>
<option value="36">36 Month</option>
<option value="Other">Other</option>
</select>
<label labelfor="SupportRenewMonthManual" id="SupportRenewMonthManualLabel">Enter Month Number: </label>
<input type="text" name="SupportRenewMonthManual" id="SupportRenewMonthManual">
JS
$(document).ready(function() {
$('#SupportRenewMonthManualLabel').hide();
$('#SupportRenewMonthManual').hide();
$('#SupportRenewMonthManual').val($('#SupportRenewMonth').val());
$('#SupportRenewMonth').change(function() {
var selectedItem = $("select option:selected").val();
if (selectedItem !== 'Other') {
$('#SupportRenewMonthManualLabel').hide();
$('#SupportRenewMonthManual').hide();
$('#SupportRenewMonthManual').val($('#SupportRenewMonth').val());
}
else
{
$('#SupportRenewMonthManualLabel').show();
$('#SupportRenewMonthManual').val('');
$('#SupportRenewMonthManual').show();
}
});
});
Как всегда, не забудьте проголосовать за любые ответы StackOverflow, которые вы найдете полезными.
Я думаю, что это должно сработать. Убедитесь, что следующий код находится в готовом документе или загружается в окно
$("form").submit(function(){
var v = $('#SupportRenewMonth').val();
if( v!== 'Other') {
$('#SupportRenewMonthManual').val( v );
}
});
Для окна ввода скрывать/показывать
$('#SupportRenewMonth').on('change', function() {
if($(this).val() == 'Other') {
$('#SupportRenewMonthManual').show();
} else {
$('#SupportRenewMonthManual').hide();
}
}).change();
Когда вы заметили, что текст все еще отображается, вы можете обернуть весь этот блок, а затем показать/скрыть блок, чтобы он стал лучше, но я оставлю эту часть вам. Вы должны быть в состоянии понять это довольно легко
Просто удалите name
из ввода, поэтому оно не будет отправлено на сервер и обработает изменение в jQuery
чтобы установить правильное значение в раскрывающемся списке.
например.
<select name="SupportRenewMonth" id="SupportRenewMonth">
<option value="12">12 Month</option>
<option value="36">36 Month</option>
<option value="Other">Other</option>
</select>Enter Month Number:
<input type="text" id="SupportRenewMonthManual">
JS
$('#SupportRenewMonthManual').on('keyup', function (e) {
var month = $(this).val();
$('#SupportRenewMonth option[value="' + month + '"]').prop('selected', true);
});