如果用户选中了一个复选框,则jQuery会将相关值存储在隐藏的输入字段中。然后我必须检查值是否已经在数组中。如果它在数组中,我不想再次添加它(避免重复),但如果它不在数组中,它将被添加到数组中。下面提到的我的代码正在相应地工作,除了检查第一个输入的复选框,即数组为空时。当数组为空时,它显示值在数组中。请看下面的代码:
页面的HTML:
<input type="hidden" name="selected" id="selected" value="" />
<input type="checkbox" name="check_list[]" class="check_list" value="23" />
<input type="checkbox" name="check_list[]" class="check_list" value="24" />
<input type="checkbox" name="check_list[]" class="check_list" value="25" />
用于在选中任何复选框时添加ID的jQuery代码:
$(document).ready(function(){
var ids = [];
$(".check_list").change(function(){
code = $(this).val();
if($.inArray(code,ids)){
alert("Value is in array");
}else{
alert("Value is not in array");
ids.push(code);
$("#selected").val(ids);
});
});
让用户首先选择值为23的复选框。这时,&#39; id&#39;数组是空的。然后jQuery检查数组中是否存在23&#39; id&#39;因为它是空的,它显示&#39;值在数组&#39;。但是后来如果用户选择24或25,代码运行良好。
为什么它不适用于首先选中的复选框? 如何解决这个问题?
答案 0 :(得分:1)
如果找不到值,则inArray返回-1,如果是,则返回值的数组索引,因此需要检查&gt; = 0。
试试这个:
$(document).ready(function(){
var ids = [];
$(".check_list").change(function(){
code = $(this).val();
if($.inArray(code,ids) >= 0){
alert("Value is in array");
}else{
alert("Value is not in array");
ids.push(code);
$("#selected").val(ids);
}
});
答案 1 :(得分:0)
描述:在数组中搜索指定的值并返回 它的索引(如果没有找到则为-1)。
它不是布尔值,而是返回找到指定值的元素的索引作为整数,如果它没有找到任何结果,则返回-1