Jquery - 如果在下拉列表中选择,如何取消隐藏单元格

时间:2015-10-14 20:06:07

标签: javascript jquery

似乎无法绕过这个。我有一个下拉输入,允许多个选择。当选择“其他”选项时,它将取消隐藏我的单元格并显示输入以添加其他详细信息。我目前使用下面的脚本,但如果我选择多个选项,包括“其他”,它仍然是隐藏的。我需要它能够在选择时取消隐藏,或者使用多个选项,或者它是唯一选择的选项。

有人有什么想法吗?

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>

3 个答案:

答案 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)

Fiddle Example

答案 2 :(得分:0)

当人们选择不同的选项时,索引的位置会发生变化。因此,当你用一个选择它时,它将为零。当你选择另一个时,它将在一个。所以你想检查inArray不返回-1

更改

if(jQuery.inArray('Other', $(this).val()) === 0)

if(jQuery.inArray('Other', $(this).val()) !== -1)