在jQuery中使用超过1个val

时间:2012-08-03 18:29:16

标签: javascript jquery

可能有一个非常简单的解决方案,但我的jQuery技能还不是很多。 我使用下面显示和隐藏基于下拉列表中的值的div。我想改编它,所以“不”和“”都会起作用。 我如何实现这个目标?

提前致谢

$('#q1').change(function(){
 if ($(this).val() == "No") {
 $('#divv').show();
 } else {
 $('#divv').hide();
 }
 });

6 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用JavaScript logical or operator||):

$('#q1').change(function() {
    value = this.value;
    if (value == "No" || value == "") {
        $('#divv').show();
    } else {
        $('#divv').hide();
    }
}
);

实际上,最具适应性的解决方案是:if (value.toLowerCase() == "no" || value == "") {无论它处于何种情况,这都会接受“否”。

演示:http://jsfiddle.net/SO_AMK/YKeFy/1/

编辑:更新代码以满足Kolink和Bergi

答案 1 :(得分:0)

使用javascript OR运算符(||):

$('#q1').change(function(){
 var thisVal = $(this).val();
 if ((thisVal == "No") || (thisVal == "")) {
 $('#divv').show();
 } else {
 $('#divv').hide();
 }
 });

答案 2 :(得分:0)

有很多方法。就个人而言,我会这样做:

if( this.value.match(/(No)?/i)) {

i允许NOnonO也有效 - 如果您只想要“否”,请将其删除。

答案 3 :(得分:0)

logical OR operator应该:

$('#q1').change(function(){
    if (this.value == "No" || this.value == "") {
        $('#divv').show();
    } else {
        $('#divv').hide();
    }
});

我没有使用$(this)(特别是两次)来创建jQuery对象,但只使用了plain javascript。更简洁,如果您需要(使用tertiary operatornot operator检查空字符串和bracket notation):

$('#q1').change(function(){
    $('#divv')[ (this.value == "No" || !this.value) ? "show" : "hide" ]();
});

答案 4 :(得分:0)

您可以使用toggle()并通过使用正则表达式检查值来设置要显示或隐藏的状态。

$('#q1').on('change', function(){
    $('#divv').toggle(this.value.match(/(no|^$)/i));
});

FIDDLE

答案 5 :(得分:-1)

复制并粘贴,这应该有效。

$('#q1').change(function(){
 if (($(this).val() == "No") || ($(this).val() == "")) {
 $('#divv').show();
 } else {
 $('#divv').hide();
 }
 });