似乎无法绕过这个。我有一个下拉输入,允许多个选择。当选择“其他”选项时,它将取消隐藏我的单元格并显示输入以添加其他详细信息。我目前使用下面的脚本,但如果我选择多个选项,包括“其他”,它仍然是隐藏的。我需要它能够在选择时取消隐藏,或者使用多个选项,或者它是唯一选择的选项。
有人有什么想法吗?
JSfiddle:https://jsfiddle.net/nh3mL3sv/
SCRIPT:
$("#support").change(function(){
if(jQuery.inArray('Other', $(this).val()) === 0)
{
$(".hidden").show();
}
else
{
$(".hidden").hide();
}
});
HTML:
<table>
<tr>
<td>
Équipe:
</td>
<td >
<select multiple id="support">
<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='Other'> Other </option>
</select>
</td>
<td>
<div class="hidden" style="display: none;">
Autres:
</div>
</td>
<td>
<div class="hidden" style="display: none;">
<input>
</div>
</td>
</tr>
</table>
答案 0 :(得分:2)
您可以使用indexOf
:
if ($(this).val().indexOf("Other") > -1) {
//Has "Other" selected.
}
答案 1 :(得分:1)
这是因为inArray()
将返回数组中位置的整数。当数组中有许多项时,它可能位于0 或更高位置。您只检查第一个位置,您需要检查所有位置( 0和更大):
if(jQuery.inArray('Other', $(this).val()) >= 0)
也可以通过确定找到值(不是-1)
来检查if(jQuery.inArray('Other', $(this).val()) != -1)
答案 2 :(得分:0)
当人们选择不同的选项时,索引的位置会发生变化。因此,当你用一个选择它时,它将为零。当你选择另一个时,它将在一个。所以你想检查inArray不返回-1
更改
if(jQuery.inArray('Other', $(this).val()) === 0)
到
if(jQuery.inArray('Other', $(this).val()) !== -1)