JSFiddle - React, Tailwind, and code Playground
HTML
<div class='module'>
<input class='itemsRadio' checked=true data-value='yes' type='radio' data-name='y' />Yes
<input class='itemsRadio' data-value='No' type='radio' data-name='x' />No
<select name='my'>
</select>
</div>
<div class='module'>
<input class='itemsRadio' checked=true data-value='Cool' type='radio' name='ok' data-name='y' />Cool
<input class='itemsRadio' data-value='QQ' type='radio' name='ok' data-name='x' />QQ
<select name='my'>
</select>
</div>
JavaScript
//var radioElems = document.querySelectorAll('.itemsRadio');
//for (var i=0; i < radioElems.length; i++) radioElems[i].addEventListener('change', handlerRadio.bind(null, radioElems[i]));
var module = (function(){
var modules = document.querySelectorAll('.module');
return {
init :function() {
this.create();
this.events();
},
handlerEvents: {
radioButtons: function handlerRadio(el, parent) {
var options = parent.querySelector('select').options,
radio = parent.querySelectorAll('.itemsRadio'),
target = el.getAttribute('data-name');
for (var i=0; i < options.length; i++) {
if (options[i].getAttribute('data-target') == target) {
options[i].selected=true;
}
};
for (var q=0; q < radio.length; q++ ) {
if (radio[q] == el) el.checked=true;
else radio[q].checked=false;
}
},
select: function handler(el, parent) {
var radio = parent.querySelectorAll('.itemsRadio');
for (var q=0; q < radio.length; q++) {
radio[q].checked=false;
}
for (var i=0; i < el.options.length; i++) {
if (el.options[i].selected) {
var attr = el.options[i].getAttribute('data-target');
parent.querySelector('input[data-name="'+attr+'"]').checked=true;
}
};
}
},
events:function() {
//вешаем обработчики на radioButtons && selects;
for (var i=0; i < modules.length; i++) {
var radioButtons = modules[i].querySelectorAll('.itemsRadio'),
select = modules[i].querySelector('select');
select.addEventListener('change', this.handlerEvents.select.bind(null, select, modules[i]));
for (var k=0; k < radioButtons.length; k++) {
radioButtons[k].addEventListener('change', this.handlerEvents.radioButtons.bind(null, radioButtons[k], modules[i]));
};
}
},
create: function() {
for (var i=0; i <...