Проблема заключается в том, что вы выбираете все textarea
экземпляры, когда происходит событие по радио, и вы также без необходимости вкладываете обработчики событий.
Чтобы исправить это, вы можете просто подключить один обработчик событий ко всем переключателям, который переключает видимость связанного textarea
, который можно получить с помощью методов обхода DOM jQuery на основе выбранного ценность.
Также обратите внимание, что ваш HTML имеет много недопустимых нестандартных атрибутов. Их необходимо удалить или преобразовать в атрибуты данных, например: data-nfield="txt_fieldhori"
. В любом случае вам нужно убедиться, что вы добавили атрибут value
к самим элементам радиовхода.
После всего сказанного попробуйте это:
$(":radio").on("change", function() {
$(this).closest('.n-choice').next('textarea').toggle(this.value === 'Normal');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="n-mrb n-choice q">
<div class="mrb-item">
<label>
<input type="radio" name="horizontal_field" value="Normal" class="k-valid" checked="true">
Normal
</label>
</div>
<div class="mrb-item">
<label>
<input type="radio" name="horizontal_field" value="Abnormal" class="k-valid">
Abnormal
</label>
</div>
</div>
<textarea class="n-text comment -EntireLine ee k-valid" id="tet"></textarea>
<div class="n-mrb n-choice q">
<div class="mrb-item">
<label>
<input type="radio" name="vert_field" value="Normal" class="k-valid" checked="true">
Normal
</label>
</div>
<div class="mrb-item">
<label>
<input type="radio" name="vert_field" value="Abnormal" class="k-valid">
Abnormal
</label>
</div>
</div>
<textarea class="n-text comment -EntireLine ee k-valid" id="te"></textarea>