<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="form-group">
<select id="s1" multiple="multiple" class="form-control" name="stype"
onchange="showfield1(this.options[this.selectedIndex].value)" required>
<option>Diamond</option>
<option>Ruby</option>
<option>Sapphire</option>
<option>Emerald</option>
<option>Tanzanite</option>
<option>Pink Sapphire</option>
<option>Aqua</option>
<option>Blue Topaz</option>
<option>Amethyst</option>
<option>Pearl</option>
<option>Garnet</option>
<option>Citrine</option>
<option>Opal</option>
<option>Other</option>
</select>
<script type="text/javascript">
function showfield1(name) {
if (name == 'Other') document.getElementById('div1').innerHTML =
'<input type="text" class="form-control" name="stypeother"'
+ ' placeholder="Please Specify"/>';
else document.getElementById('div1').innerHTML = '';
}
</script>
<div id="div1"></div>
With the above code, if I select any other <option> in addition to Other then the Please Specify <input> is not displayed. That <input> is visible only when the only selected <option> is Other. I want the Please Specify <input> to be displayed anytime the Other <option> is selected, regardless of any other <option> also being selected.
I am using the the selectedIndex of the <select> to obtain the value of the selected <option> and testing to see if that value is equal to Other. But, that is not working. How do I determine if the Other <option> is selected?
You need to check to see if the Other <option> is selected. The selectedIndex will only return the index of the first selected <option>. Given that Other is your last <option>, selectedIndex will never be the index for Other when anything else is selected. One way to check if Other is selected is to give the Other <option> an id and then check the selected property of the Other <option>.
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="form-group">
<select id="s1" multiple="multiple" class="form-control" name="stype"
onchange="showfield1()" required>
<option>Diamond</option>
<option>Ruby</option>
<option>Sapphire</option>
<option>Emerald</option>
<option>Tanzanite</option>
<option>Pink Sapphire</option>
<option>Aqua</option>
<option>Blue Topaz</option>
<option>Amethyst</option>
<option>Pearl</option>
<option>Garnet</option>
<option>Citrine</option>
<option>Opal</option>
<option id="optionOther">Other</option>
</select>
<script type="text/javascript">
function showfield1() {
if (document.getElementById('optionOther').selected) {
document.getElementById('div1').innerHTML = '<input type="text"'
+ ' class="form-control" name="stypeother"'
+ ' placeholder="Please Specify"/>';
} else {
document.getElementById('div1').innerHTML = '';
}
}
</script>
<div id="div1"></div>