元素不在数组javascript&替换数组

时间:2016-01-10 12:34:15

标签: javascript jquery arrays

这些是复选框

<label><input type="checkbox" class="category" name="selector[]" value="114" id="category_id" >Mouse</label>
<label><input type="checkbox" value="89,809,watches"  name="selector[]" class="category" id="category_id" >Watches</label>

<label><input type="checkbox" class="category" name="selector[]" value="809" id="category_id" >Men</label>
<label><input type="checkbox" class="category" name="selector[]" value="89" id="category_id" >Women</label>

这是我从复选框中取值的函数。

$('.category').click(function() {
    var val = [];
    jQuery(':checkbox:checked').each(function(i){
        val[i] = jQuery(this).val();
    }); 
});

如果有人选择男性(809)或女性(89)而没有点击观看(89,809,手表)那么我需要从数组val中删除相应的值

某人选择men然后选择val=array('809');但如果某人选择没有看守的人,则val必须为null。如果某人选择了鼠标和男人,那么val必须是val = array(&#39; 114&#39;);

我尝试使用此代码进行检查但未使用

if((.inArray(val, 89))||(.inArray(val, 809)) && (!(.inArray(val, '89,809,watches')))){
    alert('watch not selected ');
}

以及如何从数组中删除值?

2 个答案:

答案 0 :(得分:0)

这个答案是有效的。但我不确定条件是否正确。

&#13;
&#13;
$('.category').click(function() {
    var val = [];
    jQuery(':checkbox:checked').each(function(i){
        selected = jQuery(this).val();  
        if( (selected == '89' || selected == '809') &&  !( $.inArray('89,809,watches', val) != -1 ) )
            return true;
        else
            val.push( selected );
    }).get(); 
    console.log(val);
    $('#arrayVal').text( 'Array String: "' + val.toString() + '"' )
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label><input type="checkbox" class="category" name="selector[]" value="114" id="category_id" >Mouse</label>
<label><input type="checkbox" value="89,809,watches"  name="selector[]" class="category" id="category_id" >Watches</label>

<label><input type="checkbox" class="category" name="selector[]" value="809" id="category_id" >Men</label>
<label><input type="checkbox" class="category" name="selector[]" value="89" id="category_id" >Women</label>

<div id="arrayVal"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

if(($.inArray(89, val)>-1)||($.inArray(809,val)>-1) && (($.inArray('89,809,watches', val)==-1))){
    alert('watch not selected ');
}

很遗憾您知道要阅读哪个手册页,但是您没有阅读它......

  1. 您需要传递您在第一个参数中搜索的值,以及您在第二个参数中搜索的数组
  2. 返回索引,如果找不到则返回-1