选择菜单中的Javascript OR操作数不起作用

时间:2014-10-03 20:43:34

标签: javascript jquery html5 forms

我在表单中有一个下拉列表。我在表单中有两个区域,如果用户选择"其他......我想要一个框出现..."

我已经编写了一个可以同时用于下拉列表的函数,通过比较下拉列表中的字符串值(包含" other1"和" other2&#34 ;)选择两个字符串" other1"和"其它2"在我的功能中。

$('.select-other').change(function() {
        if($(this).find('option:selected').val() === ('other1' || 'other2')){
            ($(this).closest('div').next().show());
    }
});

但它似乎只是测试第一个值,忽略了我的比较运算符......

有可能纠正这个问题吗?

我错过了什么吗?

4 个答案:

答案 0 :(得分:2)

不幸的是,你无法以这种方式编写条件。你必须明确。

我会存储所选的选项:

var value = $(this).find('option:selected').val();

if (value === 'other1' || value === 'other2')) {

答案 1 :(得分:1)

试试这个:

$('.select-other').change(function() {
    var value = $(this).find('option:selected').val();
    if(value  === 'other1' || value  === 'other2'){
        ($(this).closest('div').next().show());
}

答案 2 :(得分:0)

你有条件错了,你不能这样做:

$(this).find('option:selected').val() === ('other1' || 'other2');

因为非空字符串将始终返回true,('other1' || 'other2')将始终返回" other1"

您需要单独检查这些值:

var value = $(this).find('option:selected').val();
value === 'other1' || value === 'other2'

答案 3 :(得分:0)

您需要比较两个选项的值。你现在尝试做的方式就像做$(this).find('option:selected').val() === 'other1'

您可以这样做2次检查:

$('.select-other').change(function() {
    var currentValue = this.value;
    if(currentValue === 'other1' || currentValue === 'other2'){
        ($(this).closest('div').next().show());
    }
});

或使用正则表达式:

$('.select-other').change(function() {
    var currentValue = this.value;
    if(currentValue.match(/^(other1|other2)$/)){
        ($(this).closest('div').next().show());
    }
});