【问题标题】:Check if Checkbox is checked based on name检查是否根据名称检查复选框
【发布时间】:2014-11-28 20:31:45
【问题描述】:

这是我的代码,无论是否检查,它总是返回“未检查任何内容”。

function rstSelfs() {
var chkds = document.getElementsByName('selfs');
if(chkds.checked)  {
alert ("something is checked"); }
 else {
alert("nothing is checked");
}}

我一直在使用上述作为测试,看看我是否可以让代码正常工作。我有多个名为“selfs”的复选框,如果没有选中任何名为“selfs”的框,我只想重置下拉选择。我会假设代码看起来像这样,但也不是这个或上面的代码工作......请帮助..我是新手,我试图搜索,可能已经回答了这个问题,但我很抱歉它没有发送名称对我来说。

我想要代码做的是:

function rstSelfs() {
var chkds = document.getElementsByName('selfs');
if(chkds.checked)  {
return false;  }
 else {
($('.CssSel').get(0).selectedIndex = 0) }
}



<form id="Service">
   <input type="checkbox" name="site" id="cktmcom" onclick="isTsite()">

    <input type="checkbox" name="selfs" id="ckselfc" onclick="isTsserv();isTextServC()">
    <label for="checkbox">Self-Serve Classic</label><br>
    <input type="checkbox" name="selfs" id="ckselfn" onclick="isTsserv();isTextServN()">
    <label for="checkbox">Self-Serve Next-Gen</label><br>
    <input type="checkbox" name="homeSer" id="ckhomes" onclick="isThs()">
    <label for="checkbox">Home Services</label><br>
    <input type="checkbox" name="mapp" id="ckmobilea" onclick="isTmApp()">
    <label for="checkbox">Mobile App</label><br>
    <input type="checkbox" name="checkbox" id="ckgem" onclick="isTextGem()">
    <label for="checkbox">Gemini</label><br>
</form>

<form id="Service2">
    <input type="checkbox" name="site" id="ckkmcom" onclick="isKsite()">
    <label for="checkbox">mobile.com</label><br>
    <input type="checkbox" name="selfs" id="ckKselfc" onClick="isKsserv();isKServC()">
    <label for="checkbox">M Self-Serve Classic</label><br>
    <input type="checkbox" name="selfs" id="ckKselfn" onClick="isKsserv();isKServN()">
    <label for="checkbox">M Self-Serve Next-Gen</label><br>
    <input type="checkbox" name="mapp" id="ckKmobilea" onclick="isKmApp()">
    <label for="checkbox">M Mobile App</label><br>
</form>

名称为“selfs”的复选框控制 div = selfserve 的隐藏和显示。 并且只有在没有“自我”被 chcked 时,我才需要重置下拉选择。 我实际上有 5 个名为 selfs 的复选框。代码相当大,这就是其他 3 个缺失的原因。

HTML 下拉代码为:

<div id="selfserve" style="display:none">
<select class="CssSel" style="width:175px" onChange="ssPicker()">
<option value="1" selected  style="color:red;" ssSel="**Self-Serve Issue**">Select Self-Serve        
Issue</option>
<option value="2" ssSel="Entire Site Down">Entire Site Down</option>
<option value="3" ssSel="Login Issues">Login Issues</option>
<option value="4" ssSel="Usage Meter Issue">Usage Meter Issue</option>
<option value="5" ssSel="Change feature Issues">Change feature Issues</option>
<option value="6" ssSel="Page Loading Issues">Page Loading Issues</option>
<option value="7" ssSel="Extreme Latency">Extreme Latency</option>
<option value="8" ssSel="Navigation Issues">Navigation Issues</option> 
</select>


</div>
 <input type="button" name="reset_self" value="Reset" onClick="rstSelfs()">

【问题讨论】:

  • 我猜你是用重置按钮测试这个吗?
  • 是的,我是......我实际上有一个函数,一旦它工作,它就会调用这个重置函数,但是现在我已经将它分配给一个临时重置按钮进行测试。
  • 尝试给他们一个类名,然后使用 document.getElementsByTagName(".classname")。因为您使用的方法返回的值返回一个对象,您必须解析该对象才能真正获得检查的值,无论是否单击。

标签: javascript jquery checkbox drop-down-menu selectedvalue


【解决方案1】:

不工作:

由于你使用jQuery,你可以检查是否有任何复选框没有被选中:

function rstSelfs() {
    var chkds = $("input[name='selfs']:checkbox");

    if (chks.not(":checked").length > 0)  {
        return false;  
    } else {
        ($('.CssSel').get(0).selectedIndex = 0) 
    }
}

这行得通,但我不得不重新设计一下!谢谢!

调整,工作:

function rstSelfs() {
var chkds = $("input[name='selfs']:checkbox");

if (chkds.is(":checked"))  {
    return false;  
} else {
    ($('.CssSel').get(0).selectedIndex = 0) 
}
}

【讨论】:

  • 我尝试使用它但没有用。我用 var 名称更正了错误,因为在 if 语句中它被写为 chks 而不是 chkds。
  • 有人知道为什么这段代码不起作用吗?这对我来说最有意义,但什么也没做
【解决方案2】:

getElementsByName() 函数返回一个元素数组,而不是单个元素,因此它没有属性checked。如果这个名字只有一个元素,你应该使用这样的东西:

document.getElementsByName("selfs")[0].checked

或者纠正你的功能:

function rstSelfs() {
   var chkds = document.getElementsByName('selfs')[0];
   if(chkds.checked)  {
       alert ("something is checked"); }
   else {
       alert("nothing is checked");
}}

【讨论】:

  • 我确实有多个具有该名称的元素,那么我将如何检查?
【解决方案3】:

由于您有多个具有相同名称的复选框,因此您在执行 document.getElementsByName('selfs') 时将获得数组。尝试循环遍历结果数组以查看是否检查了其中任何一项。

类似这样的:-

var isChecked=false ;

 for (i=0; i<document.Service.selfs.length;i++) {
if(document.Service.selfs[i].checked)

isChecked=true ;

}

 if(isChecked)  ($('.CssSel').get(0).selectedIndex = 0) 

【讨论】:

  • Uncaught TypeError: Cannot read property 'selfs' of undefined for (i=0; i
  • 什么是 telusService - 我在您的 HTML 代码中没有看到。也许在 for 循环中试试这个:- document.getElementById("id_of_form_which_contains_selfs").selfs.length 而不是 document.Service.selfs.length 。
  • 对不起,我在我的代码中重命名了它,但我确实使用了
  • 我将其更改为 document.getelementbyid 并且它只是重置下拉列表,无论是否检查某些内容。
猜你喜欢
  • 2017-11-01
  • 1970-01-01
  • 2023-04-05
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
相关资源
最近更新 更多