Pure JS (почему jQuery?)
Я внес изменение: если снова изменить выбор с «Unlimited», остальные 2 больше не отключаются, и получают свое древнее значение, прежде чем быть отключенным
Второе решение с постоянными значениями в наборе данных:
const threeSelects = document.querySelectorAll('select')
, C_Unlimited = 'Unlimited'
threeSelects.forEach(Slc=>{
Slc.dataset.val = Slc.value
Slc.onchange=e=>{
let isDisabled = (Slc.value===C_Unlimited)
Slc.dataset.val = Slc.value
threeSelects.forEach(Sx=>{
if(Sx!==Slc) Sx.value = (Sx.disabled=isDisabled)? C_Unlimited: Sx.dataset.val
})
}
})
const threeSelects = document.querySelectorAll('select')
, C_Unlimited = 'Unlimited'
threeSelects.forEach(Slc=>{
Slc.dataset.val = Slc.value
Slc.onchange=e=>{
let isDisabled = (Slc.value===C_Unlimited)
Slc.dataset.val = Slc.value
threeSelects.forEach(Sx=>{
if(Sx!==Slc) Sx.value = (Sx.disabled=isDisabled)? C_Unlimited: Sx.dataset.val
})
}
})
.col-12 { display:inline-block; padding:.5em }
label, select { float:left;clear:both }
<div class="row mb-3">
<div class="col-12 col-md-4 col-lg-3 mb-3">
<label>Distance per day</label>
<select id="distancePerDay" class="form-control custom-select">
<option value="100">100</option>
<option value="150" selected="selected">150</option>
<option value="200">200</option>
<option value="250">250</option>
<option value="300">300</option>
<option value="350">350</option>
<option value="400">400</option>
<option value="Unlimited">Unlimited</option>
</select>
</div>
<div class="col-12 col-md-4 col-lg-3 mb-3">
<label>Distance per week</label>
<select id="distancePerWeek" class="form-control custom-select">
<option value="700">700</option>
<option value="950" selected="selected">950</option>
<option value="1200">1200</option>
<option value="1450">1450</option>
<option value="1700">1700</option>
<option value="1950">1950</option>
<option value="2200">2200</option>
<option value="Unlimited">Unlimited</option>
</select>
</div>
<div class="col-12 col-md-4 col-lg-3 mb-3">
<label>Distance per month</label>
<select id="distancePerMonth" class="form-control custom-select">
<option value="1500">1500</option>
<option value="1850">1850</option>
<option value="2250">2250</option>
<option value="2600">2600</option>
<option value="2950">2950</option>
<option value="3300">3300</option>
<option value="3650">3650</option>
<option value="Unlimited">Unlimited</option>
</select>
</div>
</div>
Первое решение с постоянными значениями в таблице JS:
const threeSelects = Array
.from(document.querySelectorAll('#distancePerDay, #distancePerWeek, #distancePerMonth '))
.map(sx => ({ sel: sx, val: sx.value }))
, C_Unlimited = 'Unlimited'
threeSelects.forEach(eSchg => { eSchg.sel.onchange = e => {
eSchg.val = eSchg.sel.value
threeSelects.forEach(eSx => {
if (eSx.sel !== eSchg.sel) {
if (eSchg.sel.value === C_Unlimited) {
eSx.sel.value = C_Unlimited
eSx.sel.disabled = true
}
else if (eSx.sel.value === C_Unlimited) {
eSx.sel.value = eSx.val
eSx.sel.disabled = false
}
}
})
} })
.col-12 { display:inline-block; padding:.5em }
label, select { float:left;clear:both }
<div class="row mb-3">
<div class="col-12 col-md-4 col-lg-3 mb-3">
<label>Distance per day</label>
<select id="distancePerDay" class="form-control custom-select">
<option value="100">100</option>
<option value="150" selected="selected">150</option>
<option value="200">200</option>
<option value="250">250</option>
<option value="300">300</option>
<option value="350">350</option>
<option value="400">400</option>
<option value="Unlimited">Unlimited</option>
</select>
</div>
<div class="col-12 col-md-4 col-lg-3 mb-3">
<label>Distance per week</label>
<select id="distancePerWeek" class="form-control custom-select">
<option value="700">700</option>
<option value="950" selected="selected">950</option>
<option value="1200">1200</option>
<option value="1450">1450</option>
<option value="1700">1700</option>
<option value="1950">1950</option>
<option value="2200">2200</option>
<option value="Unlimited">Unlimited</option>
</select>
</div>
<div class="col-12 col-md-4 col-lg-3 mb-3">
<label>Distance per month</label>
<select id="distancePerMonth" class="form-control custom-select">
<option value="1500">1500</option>
<option value="1850">1850</option>
<option value="2250">2250</option>
<option value="2600">2600</option>
<option value="2950">2950</option>
<option value="3300">3300</option>
<option value="3650">3650</option>
<option value="Unlimited">Unlimited</option>
</select>
</div>
</div>