У меня есть веб-форма, где я хочу изменить значение текстового ввода на основе соответствующего выбора переключателя. Вместо того, чтобы использовать идентификаторы каждого текстового ввода и переключателя, я хочу следовать простому шаблону, в котором текстовые входы основывают свое значение на переключателях, которые совместно используют (не немедленный) родительский набор полей.Изменить значение ввода на основе радио с одним и тем же родителем
Существует не один способ выполнить это, но моя стратегия состояла в том, чтобы найти ближайший родительский набор радиокнопки (тот, который также является родителем для ввода текста), найти его для правильного ввода текста и изменить его значение текстового ввода.
Вот то, что я до сих пор, но он не работает:
jQuery('.big-container input[id$="-selector-1"]').change(function() {
var parent = jQuery('.smaller-container input[id$="-selector-1"]').closest('fieldset');
jQuery('parent').find('.fieldset-wrapper div:nth-child(2) input').val('1');
});
jQuery('.big-container input[id$="-selector-2"]').change(function() {
var parent = jQuery('.smaller-container input[id$="-selector-2"]').closest('fieldset');
jQuery('parent').find('.fieldset-wrapper div:nth-child(2) input').val('0');
});
HTML:
<fieldset class="big-wrapper">
<div class="fieldset-wrapper">
<fieldset class="medium-wrapper-1">
<div class="fieldset-wrapper">
<div>...</div> <!-- unimportant -->
<fieldset class="smaller-container-1">
<div class="fieldset-wrapper">
<div>
<label>...</label>
<div class="form-radios">
<div class="radio-1-wrapper">
<div class="input-label-wrapper">
<input id="blahblahblah-selector-1">...</input>
<label>...</label>
</div>
</div>
<div class="radio-2-wrapper">
<div class="input-label-wrapper">
<input id="blahblahblah-selector-2">...</input>
<label>...</label>
</div>
</div>
</div>
</div>
<div class="text-input-X">
<label>...</label>
<input>...</input>
</div>
<div class="text-input-Y">...</div> <!-- parallel to .text-input-X -->
<div class="text-input-Z">...</div> <!-- parallel to .text-input-X -->
</div>
</fieldset>
<fieldset class="smaller-container-2">...</fieldset> <!-- parallel to .smaller-container-1 -->
<fieldset class="smaller-container-3">...</fieldset> <!-- parallel to .smaller-container-1 -->
<fieldset class="smaller-container-4">...</fieldset> <!-- parallel to .smaller-container-1 -->
</div>
</fieldset>
<fieldset class="medium-wrapper-2">...</fieldset> <!-- parallel to .medium-wrapper-1 -->
</div>
</fieldset>
В случае не ясно, input[id$="-selector-1"]
и input[id$="-selector-2"]
являются радио-кнопки, и регулярный ввод в пределах div.text-input-X
- это тот, который я хочу изменить.
Что я делаю неправильно?
Можете ли вы разместить свою разметку HTML? – technophobia
Сокращенный HTML выше. Думал, что это может отвлекать, чтобы увидеть все это, но выбить себя из себя. – cjl750
Не могли бы вы пояснить: во всех наборах полей вы хотите, чтобы первое поле ввода текста обновлялось при изменении переключателей? И единственными значениями, которые может иметь первый текстовый ввод, является '0' или' 1' (на основе выбранного переключателя)? – technophobia