我在表单中有一个下拉列表。我在表单中有两个区域,如果用户选择"其他......我想要一个框出现..."
我已经编写了一个可以同时用于下拉列表的函数,通过比较下拉列表中的字符串值(包含" other1"和" other2&#34 ;)选择两个字符串" other1"和"其它2"在我的功能中。
$('.select-other').change(function() {
if($(this).find('option:selected').val() === ('other1' || 'other2')){
($(this).closest('div').next().show());
}
});
但它似乎只是测试第一个值,忽略了我的比较运算符......
有可能纠正这个问题吗?
我错过了什么吗?
答案 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());
}
});