这是我的代码,它总是返回"没有检查任何内容"无论是否检查过某些东西。
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()">
答案 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)