如何通过 jQuery 检查数组中是否存在值
how to check existence of a value in array by jQuery
如果用户选中一个复选框,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" />
jQuery 用于在选中任何复选框时添加 ID 的代码:
$(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 的复选框。此时,'id'数组为空。然后 jQuery 检查数组 'id' 中是否存在 23,因为它是空的,所以显示 'Value is in array'。但稍后如果用户选择 24 或 25,代码运行良好。
为什么它对第一个选中的复选框不起作用?
如何解决这个问题?
inArray returns -1 如果找不到该值或该值的数组索引,如果找到则需要检查 >= 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);
}
});
Description: Search for a specified value within an array and return
its index (or -1 if not found).
它不是布尔值,而是 return 以整数形式找到指定值的元素的索引,如果找不到任何结果,则为 -1。
如果用户选中一个复选框,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" />
jQuery 用于在选中任何复选框时添加 ID 的代码:
$(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 的复选框。此时,'id'数组为空。然后 jQuery 检查数组 'id' 中是否存在 23,因为它是空的,所以显示 'Value is in array'。但稍后如果用户选择 24 或 25,代码运行良好。
为什么它对第一个选中的复选框不起作用? 如何解决这个问题?
inArray returns -1 如果找不到该值或该值的数组索引,如果找到则需要检查 >= 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);
}
});
Description: Search for a specified value within an array and return its index (or -1 if not found).
它不是布尔值,而是 return 以整数形式找到指定值的元素的索引,如果找不到任何结果,则为 -1。