如何检查两个或多个变量是否设置为true

时间:2015-10-30 15:46:41

标签: jquery

我有一些更大的形式,有很多收音机和复选框,等等。我正在执行几项检查,以根据用户输入返回不同的消息。我很好。总共有9种不同的场景,我目前将它们存储为单个变量中的真或假:

var scenario_one; 
var scenario_two;
var scenario_three;
var scenario_four;
var scenario_five;
var scenario_six;
var scenario_seven;
var scenario_eight;
var scenario_nine;

$('input:radio[name="opt1"]').change(function(){
    if($(this).val() == 'Yes'){
       scenario_one = true;
      } else {
       scenario_one = false;
      };
  });

// ... and so on until all scenarios are checked ...

现在我的问题是:我如何检查是否有两个或更多的vars设置为" true" ?所以我可以这样做:

$('.button').click(function(){
if ( /* Check if 2 oder more of var are set true */ ){
        alert('Some nice alert message');
    };
});

感觉这不应该太难,但我对这个想法已经不多了。

2 个答案:

答案 0 :(得分:0)

最好用一组布尔值替换你的变量来动态控制它。

/*Replace all your variables with this*/
var scenarios = []


$('input:radio[name="opt1"]').change(function(){
      /* This will assign true/false to scenario[1]*/
      scenario[1] = ($(this).val() == 'Yes');
});

/* so on for the other scenarios*/

/* Then, when you need it... */

if (countTrue(scenario) >= 2) {

    alert("Two or more scenarios are true!");

} 

countTrue

的位置
function countTrue(arr) {
    var count = 0;
    arr.forEach(function(el){
        if(el){
            count += 1;
        }
    }
    return count;
}

答案 1 :(得分:0)

你应该使用数组来实现这一目标

类似的东西:

var scenarios = [];

$('input:radio').change(function(){
    //get the number of the scenario to change
    var scenario = $(this).attr("name").substr($(this).attr("name").length - 1);
    if($(this).val() == 'Yes'){
        scenarios[scenario] = true;
    } else {
        scenarios[scenario] = false;
    };
});

$('#button').click(function(){
    var count = 0;
    for (i = 0; i < scenarios.length; i++) { 
        //if scenario equals true add to counter
        if(scenarios[i] == true)
            count++;

        //if counter is equal or superior to 2 alert and stop the for loop      
        if(count >= 2){
            alert('Some nice alert message');
            break;
        }

    }
});

working jsFiddle - 已更新