检查是否根据名称选中了复选框

时间:2014-11-28 20:31:46

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

这是我的代码,它总是返回"没有检查任何内容"无论是否检查过某些东西。

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>

名称为&#34; selfs&#34;的复选框控制隐藏并显示div = selfserve。 而且我只需要重置下拉选项,如果没有#34; selfs&#34;被打乱了。 我实际上有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()">

3 个答案:

答案 0 :(得分: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) 
}
}

答案 1 :(得分:0)

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");
}}

答案 2 :(得分:0)

由于您有多个具有相同名称的复选框,因此当您执行document.getElementsByName(&#39; selfs&#39;)时,您将获得数组。尝试循环生成的数组,看看是否有任何一个被检查。

这样的事情: -

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)