In reference to a very similar question asked before me:
disable select option value when selected
How would one expand on Michel’s solution? Specifically, I’m looking to get that same exact function, but with 11 different options and 11 instances of the selection groups. Further, I would like to have multiple instances of the multiple instances, if that makes sense. Basically, a column of selection groups going down (visually) that are all tied together such that you couldn’t select two of the same options within that vertical group, then move on to another column to the right with a new set of selections that don’t interfere with the existing/previous column’s selections; and on and on in a grid pattern until about seven or eight columns or so total.
I can do what I neeed to do in Excel, but I have a useful application of this for something I’m doing where browser-based would be better, so any help that can be offered is appreciated.
I am still working on this, and I got something that pretty much works as I need it to work. The issue I am having now is there is TONS of code, so I have a feeling that I'm not doing it right. This much code isn't really sustainable and easily editable if we want to change little things here and there.
This is working in a browser, but doesn't seem to want to run correctly in JSFiddle or Plunker, so here are my code bits...
Javascript:
$(document).ready(function() {
$(".positions_1").change(function() {
// Get the selected value
var selected = $("option:selected", $(this)).val();
// Get the ID of this element
var thisID = $(this).attr("id");
// Reset so all values are showing:
$(".positions_1 option").each(function() {
$(this).show();
});
$(".positions_1").each(function() {
if ($(this).attr("id") != thisID) {
$("option[value='" + selected + "']", $(this)).attr("disabled", true);
}
});
});
});
$(document).ready(function() {
$(".positions_2").change(function() {
// Get the selected value
var selected = $("option:selected", $(this)).val();
// Get the ID of this element
var thisID = $(this).attr("id");
// Reset so all values are showing:
$(".positions_2 option").each(function() {
$(this).show();
});
$(".positions_2").each(function() {
if ($(this).attr("id") != thisID) {
$("option[value='" + selected + "']", $(this)).attr("disabled", true);
}
});
});
});
$(document).ready(function() {
$(".positions_3").change(function() {
// Get the selected value
var selected = $("option:selected", $(this)).val();
// Get the ID of this element
var thisID = $(this).attr("id");
// Reset so all values are showing:
$(".positions_3 option").each(function() {
$(this).show();
});
$(".positions_3").each(function() {
if ($(this).attr("id") != thisID) {
$("option[value='" + selected + "']", $(this)).attr("disabled", true);
}
});
});
});
HTML:
<div class="inning no-print">
<h1>Player Name</h1>
<input type="text" class="name_input_1">
<br>
<input type="text" class="name_input_2">
<br>
<input type="text" class="name_input_3">
<br>
<input type="text" class="name_input_4">
<br>
<input type="text" class="name_input_5">
<br>
<input type="text" class="name_input_6">
<br>
<input type="text" class="name_input_7">
<br>
<input type="text" class="name_input_8">
<br>
<input type="text" class="name_input_9">
<br>
<input type="text" class="name_input_10">
<br>
<input type="text" class="name_input_11">
<br>
<input type="text" class="name_input_12">
<br>
</div>
<div class="inning no-print">
<h1>1st Inning</h1>
<select class="positions_1" onchange="document.positions_1_1.showValue_1_1.value=this.value">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_2" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_3" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_4" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_5" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_6" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_7" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_8" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_9" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_10" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_11" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_12" class="positions_1">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
</div>
<div class="inning no-print">
<h1>2nd Inning</h1>
<select id="2_1" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_2" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_3" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_4" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_5" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_6" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_7" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_8" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_9" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_10" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_11" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="2_12" class="positions_2">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
</div>
<div class="inning no-print">
<h1>3rd Inning</h1>
<select id="1_1" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_2" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_3" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_4" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_5" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_6" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_7" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_8" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_9" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_10" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_11" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
<select id="1_12" class="positions_3">
<option disabled selected value>Position</option>
<option value="P">P</option>
<option value="C">C</option>
<option value="1B">1B</option>
<option value="2B">2B</option>
<option value="3B">3B</option>
<option value="SS">SS</option>
<option value="LF">LF</option>
<option value="CF">CF</option>
<option value="RF">RF</option>
<option value="LCF">LCF</option>
<option value="RCF">RCF</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
</select>
<br>
</div>
As you can see (for those who are into baseball), this is for three innings' worth of players. I'm using the classes "positions_1", "positions_2", and "positions_3" for first three innings so far. I need to do this for six more innings to get the full nine innings of a regulation game. That will increase the volume of code text by a lot, and it seems like there's a more economic and/or elegant way to do this.
Is there a way to improve upon any of this code? Whether that's the Javascript, HTML, or both, that would be awesome if someone would impart their wisdom on this.