如何检查是否存在多个同名复选框或仅存在一个此类复选框

How to check if multiple checkboxes with same name present or only one such checkbox present?

本文关键字:存在 复选框 一个 何检查 是否 检查      更新时间:2023-09-26

您如何确切地检查您获得的复选框值是变量还是数组。我有一个PHP脚本,它根据文件夹中存在的目录数量使用复选框动态填充表单。现在只要有多个目录我可以使用以下代码

for (i=0;i<document.getElementById('editarticle').currentcategories.length;i++)
{
    if      
(document.getElementById('editarticle').currentcategories[i].checked==true)
    {
    currentcheckedcategories[currentcheckedcategoriescounter] =  
document.getElementById('editarticle').currentcategories[i].value;
    currentcheckedcategoriescounter++

    }
    else
    {
    currentnotcheckedcategories[currentnotcheckedcategoriescounter] =    
document.getElementById('editarticle').currentcategories[i].value;
    currentnotcheckedcategoriescounter++
    }
}

但是,如果当前类别不是一个数组,即只有一个类别,那么我得到一个未定义并且不收集类别值。在运行 for 循环之前,通过检查当前类别是否是数组来绕过此问题的唯一方法是什么?如果是这样,我将如何检查当前类别是否是一个数组。我在另一个论坛上读到您可以使用 Array 的实例,但这似乎不起作用,另一个网站说这样做不会是故障安全的,因为它会失败一个使用 iFrames。希望有人可以阐明如何检查当前类别是否是一个数组或为我的问题提供替代代码。提前谢谢。

附言。我需要代码是JavaScript,而不是JQuery或任何其他框架。

部分解决

好吧,到目前为止,我已经使用以下if语句来检查是否存在具有相同名称的多个复选框。

if(document.getElementById('editarticle').currentcategories.length == undefined)

未定义表示只有一个具有该名称的复选框可用。否则,可以选择多个当前类别复选框。似乎适用于IE 8 Firefox和Chrome。不相信这是最好的方法。也许如果有人看到此实现中的缺陷或更好的解决方案,请告诉我。

我尝试了 Edorkas 代码,但该代码基于当前类别值的数组返回 true。因此,如果我有三个名为当前类别的复选框,并且只选中了一个,那么代码将为数组返回 false。当然,这可能是我的错,因为我将这个问题的标题措辞为"如何检查复选框值是否为数组",也许更好的标题是"如何检查是否存在多个同名复选框"。我对此进行了更改,以更好地反映我的问题。

如果对象定义了属性长度,则它应该是一个数组。要小心比较,因为当数组为空时,if (result.length( 将为 false。但是,此函数将更有用,在此答案中找到 检查对象是否为数组?

window.isArray = function(candidate){
    if (candidate == null)
        return false;
    return ( Object.prototype.toString.call(candidate) === '[object Array]' )
}
相关文章: