- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在向表单添加一些交互性。
用户将从一系列事件中进行选择。有些事件有时间冲突。
如果用户选择其中一项时间冲突的事件,则与之冲突的事件将被禁用并且无法选择。
如果用户随后取消选择该复选框,则他们都将被启用,并且可以自由选择他们想要的任何复选框。
现在,我可以禁用所有正确的框。但除了第一个框架之外,我无法再次禁用它们。对于其他人,我被锁定了我的决定,必须刷新页面。为什么会出现这种情况?
这是我的代码:
Javascript
// Register for Activities section of the form.
document.querySelector(".activities").addEventListener("change", function() {
var main = document.getElementById("all");
var framework = document.getElementById("framework");
var libs = document.getElementById("libs");
var express = document.getElementById("express");
var node = document.getElementById("node");
var build = document.getElementById("build");
var npm = document.getElementById("npm");
var frameworkLbl = document.getElementById("frameworkLabel");
var libsLbl = document.getElementById("libsLabel");
var expressLbl = document.getElementById("expressLabel");
var nodeLbl = document.getElementById("nodeLabel");
// If the user selects a workshop, don't allow selection of a workshop at the same date and time -- you should disable the checkbox and visually indicate that the workshop in the competing time slot isn't available.
if(framework.checked == true) {
express.disabled = true;
expressLbl.style.color = "grey";
} else if(express.checked == true) {
framework.disabled = true;
frameworkLbl.style.color = "grey";
} else if(libs.checked == true) {
node.disabled = true;
nodeLbl.style.color = "grey";
} else if(node.checked == true) {
libs.disabled = true;
libsLbl.style.color = "grey";
}
// When a user unchecks an activity, make sure that competing activities (if there are any) are no longer disabled.
if(framework.checked == false) {
express.disabled = false;
expressLbl.style.color = "black";
} else if(express.checked == false) {
framework.disabled = false;
frameworkLbl.style.color = "black";
} else if(libs.checked == false) {
node.disabled = false;
nodeLbl.style.color = "black";
} else if(node.checked == false) {
libs.disabled = false;
libsLbl.style.color = "black";
}
});
HTML
<fieldset class="activities">
<legend>Register for Activities</legend>
<div id="activityReminder"></div>
<div id="lineBreak"></div>
<label><input type="checkbox" name="all" id="all" class="activity"> Main Conference — $200</label>
<label id="frameworkLabel"><input type="checkbox" name="js-frameworks" id="framework" class="activity"> JavaScript Frameworks Workshop — Tuesday 9am-12pm, $100</label>
<label id="libsLabel"><input type="checkbox" name="js-libs" id="libs" class="activity"> JavaScript Libraries Workshop — Tuesday 1pm-4pm, $100</label>
<label id="expressLabel"><input type="checkbox" name="express" id="express" class="activity"> Express Workshop — Tuesday 9am-12pm, $100</label>
<label id="nodeLabel"><input type="checkbox" name="node" id="node" class="activity"> Node.js Workshop — Tuesday 1pm-4pm, $100</label>
<label><input type="checkbox" name="build-tools" id="build" class="activity"> Build tools Workshop — Wednesday 9am-12pm, $100</label>
<label><input type="checkbox" name="npm" id="npm" class="activity"> npm Workshop — Wednesday 1pm-4pm, $100</label>
</fieldset>
最佳答案
您的复选框和依赖复选框组应该独立于其他复选框组。
else if 语句的含义是您已使它们全部相互依赖。它们应该是单独的 if 语句。
因此,有效的修正是
// Register for Activities section of the form.
document.querySelector(".activities").addEventListener("change", function(){
var main = document.getElementById("all");
var framework = document.getElementById("framework");
var libs = document.getElementById("libs");
var express = document.getElementById("express");
var node = document.getElementById("node");
var build = document.getElementById("build");
var npm = document.getElementById("npm");
var frameworkLbl = document.getElementById("frameworkLabel");
var libsLbl = document.getElementById("libsLabel");
var expressLbl = document.getElementById("expressLabel");
var nodeLbl = document.getElementById("nodeLabel");
// If the user selects a workshop, don't allow selection of a workshop at the same date and time -- you should disable the checkbox and visually indicate that the workshop in the competing time slot isn't available.
if(framework.checked == true) {
express.disabled = true;
expressLbl.style.color = "grey";
}
if(express.checked == true) {
framework.disabled= true;
frameworkLbl.style.color = "grey";
}
if(libs.checked == true) {
node.disabled = true;
nodeLbl.style.color = "grey";
}
if(node.checked == true) {
libs.disabled = true;
libsLbl.style.color = "grey";
}
// When a user unchecks an activity, make sure that competing activities (if there are any) are no longer disabled.
if(framework.checked == false) {
express.disabled = false;
expressLbl.style.color = "black";
}
if(express.checked == false) {
framework.disabled = false;
frameworkLbl.style.color = "black";
}
if(libs.checked == false) {
node.disabled = false;
nodeLbl.style.color = "black";
}
if(node.checked == false) {
libs.disabled = false;
libsLbl.style.color = "black";
}
});
关于javascript - 为什么我的所有复选框不具有相同的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261193/
我想创建一个基于 jQuery 的非常简单的 html 编辑器(不是所见即所得)。 我的问题是如何制作 textarea或 div可能 在上面写一些文字 然后样式即标签(例如 some stuff 将
根据文档 isset 条款“测试此项目中是否已设置给定属性”。我不明白设置属性时 isset 返回 true 还是 false 在下面的代码片段中,当 env.JAVA_HOME 未设置时,java.
我正在尝试取消映射 o这是执行 :only 的默认命令( :help :only ),所以我尝试的第一件事是: nmap o 这种作品,除非我按 ,等待超过timeoutlen ms 然后按 o
我有以下型号: class MetaData(models.Model): created_at = models.DateTimeField(auto_now_add=True, auto_
下面列出了两行代码。两者对日期和时间的期望相同,但只有一个有效。我正在使用 R 3.1。 以下不起作用: DateTime2=strftime("08/13/2010 05:26:24.350", f
我有一个关于 C 代码的问题。 #include void foo(void){ int a; printf("%d\n",a); } void bar(void){
如果文件大小 > 8k,为什么读取的最后一个字节 = 0? private static final int GAP_SIZE = 8 * 1024; public static void main(
我有一个命令 Get-Testdata从不同来源检索测试数据并将这些数据存储到 PSObject以不同的值作为属性。然后将对象总数存储为数组,以便于操作、排序、计算等。 我的问题是我希望能够将这些数据
我正在使用 epoll 将大消息写入使用 HTTP 协议(protocol)的服务器。 fds 都设置为非阻塞,我正在使用边缘触发事件。我知道对于 EPOLLIN,我需要循环读取 fd,直到返回 EA
这对我来说听起来很奇怪: $test_1 = 'string'; $test_2 = '0'; var_dump(intval($test_1)); // Output: int 0 var_dump
这个问题在这里已经有了答案: Java: Integer equals vs. == (7 个回答) 7年前关闭。 请您解释以下行为。 public class EqAndRef { publ
Drupal 的行为到底是什么? 它为模块开发人员提供什么类型的服务层? 它映射到 jQuery.ready 的关系类型是什么? 最佳答案 长版:Drupal.behaviors 不仅仅是 jQuer
以下代码: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ for (int i=0
人们可以将项目添加到数据库中。我让他们选择在此时添加它,或手动选择日期。 因此我得到了这个 HTML 结构。 (请注意,我将日期和时间选择器妥协为只有一行文本) Selec
创建了一个数据框: simpleDF is.na(simpleDF$vals) [1] TRUE TRUE FALSE > is.nan(simpleDF$vals) [1] FALSE TRU
我有一个大的 docker 镜像 A,我创建了一个新的 Dockerfile FROM A RUN rm /big-folder 我尝试使用以下方法构建图像: docker build --squas
我想知道以下情况下 JVM 的行为是什么: JVM 最小堆大小 = 500MB JVM 最大堆大小 = 2GB 操作系统有 1GB 内存 JVM启动后,程序运行一段时间后,使用内存超过1GB。我想知道
我们正在使用 spikeearrest 策略,但我们不了解其工作原理。峰值逮捕配置如下: 5pm 阅读文档,我们了解到,如果我们在一分钟内调用此流超过 5 次,则该策略将在第 5 次之后
我正在使用 cURL 发送 POST 请求: curl http://tarvos.local:8080/partial_Users/2 -d '{currentPage : 1, firstID :
我的表中有 6442670 条记录,我正在使用以下命令获取它们jdbctemplate 使用行号一次 1000000 个。以下是查询 select * from (select rowNum rn
我是一名优秀的程序员,十分优秀!