check select options for duplicates
by Terrance Smith
HTML
<p>Test for dupes</p>
<select name="test">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<select name="test">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<select name="test">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<select name="test">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<select name="test">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<input type="button" value="test vals" onclick="testMatchingValsSelected();" />
JavaScript
function eliminateDuplicates(arr) {
var i,
len = arr.length,
out = [],
obj = {};
for (i = 0; i < len; i++) {
obj[arr[i]] = 0;
}
for (i in obj) {
out.push(i);
}
return out;
}
function HasDupes(arr) {
var originalLength = arr.length,
newLength = eliminateDuplicates(arr).length;
console.log("originalLength =" + originalLength);
console.log("newLength =" + newLength);
return originalLength !== newLength;
}
function testHasDupes() {
var arr = [1, 2, 3, 2];
assert((HasDupes(arr) === true), "HasDupes Failed");
console.log("testHasDupes: Passed");
}
function testMatchingValsSelected() {
var result = HasDupes(getArrayOfSelectedOptionValues("test"));
if (result) {
console.log("You have selected duplicate values");
}
}
function getArrayOfSelectedOptionValues(elementName) {
var retval = [];
var selectedVals = document.getElementsByName(elementName);
for (var i = 0; i < selectedVals.length; i++) {
retval.push(selectedVals[i].value);
}
console.log(retval);
/*$(selector).each(function (index, val) {
retval.push(val.value);
});*/
return retval;
}
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}