JSFiddle - React, Tailwind, and code Playground
by Balkanlii
HTML
<b>Project 1</b>
<select class="myclass" name="ddl1" id="ddl1"><option value="0"> </option><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><br />
<b>Project 2</b>
<select class="myclass" name="ddl2" id="ddl2"><option value="0"> </option><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><br />
<b>Project 3</b>
<select class="myclass" name="ddl3" id="ddl3"><option value="0"> </option><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><br />
JavaScript
var previousValue = 0;
$("select[class='myclass']").on('focusin', function(){
previousValue = $(this).val();
});
$("select[class='myclass']").on('change', function (event) {
var prevValue = parseInt(previousValue);
var selectedValue = parseInt($(this).val());
var selectedId = $(this).attr('id');
$('#' + selectedId + " option").removeAttr("selected");
$('#' + selectedId + " option[value=\""+selectedValue+"\"]").attr('selected', true);
$("select[class='myclass']").each(function (index, element) {
var eval = parseInt($('#' + element.id).val());
if (prevValue !== 0 && selectedValue !== 0) {
if (eval >= selectedValue && (eval < prevValue) && element.id !== selectedId) {
var b = eval + 1;
if (b <= 3)
$('#' + element.id).prop('selectedIndex', b);
$('#' + element.id + " option").removeAttr("selected");
$('#' + element.id + " option[value=\"" + b + "\"]").attr('selected', true);
}
else if (eval <= selectedValue && (eval > prevValue) && element.id !== selectedId) {
var b = eval - 1;
$('#' + element.id).prop('selectedIndex', b);
$('#' + element.id + " option").removeAttr("selected");
$('#' + element.id + " option[value=\"" + b + "\"]").attr('selected', true);
}
}
else if (prevValue == 0) {
if (selectedValue > 0) {
if (eval >= selectedValue && element.id !== selectedId) {
var b = eval + 1;
if (b <= 3) {
$('#' + element.id).prop('selectedIndex', b);
$('#' + element.id + "...