作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上,我使用纯 JS 创建一个复选框范围。我想不通的是,如何使选中的范围无法取消选中。例如,您选中 2 和 5。所以数字 3 和 4 应该是不可能取消选中的,但是 2 和 5 是可以取消选中的。
<ul>
<li><input type="checkbox" value="1">One</input></li>
<li><input type="checkbox" value="2">Two</input></li>
<li><input type="checkbox" value="3">Three</input></li>
<li><input type="checkbox" value="4">Four</input></li>
<li><input type="checkbox" value="5">Five</input></li>
<li><input type="checkbox" value="6">Six</input></li>
<li><input type="checkbox" value="7">Seven</input></li>
</ul>
// JavaScript
var el = document.getElementsByTagName("input");
var lastChecked = null;
// Iterate through every 'input' element and add an event listener = click
for(var i = 0; i < el.length; i++){
el[i].addEventListener("click", myFunction);
}
function myFunction() {
// In this statement we check, which input is checked..✓
if (!lastChecked) {
lastChecked = this;
return;
}
// Declaring 'from' and 'to' and getting index number of an array-like inputs
var from = [].indexOf.call(el, this);
var to = [].indexOf.call(el, lastChecked);
/* Here we will know which 'check' will be the min and which will be the max with the
help of Math metods */
var start = Math.min(from, to);
var end = Math.max(from, to) + 1;
// Here we create an array from NodeList
var arr = Array.prototype.slice.call(el);
// Here we get a new array, where we declare the start and the end
// Start is the min, end is the max
var slicedArr = arr.slice(start, end);
// Now we iterate through every sliced input, and set its attribute to checked
for(var j = 0; j < slicedArr.length; j++){
slicedArr[j].checked = lastChecked.checked;
}
lastChecked = this;
}
谢谢大家的帮助。顺便说一句,这是我关于 stackoverflow 的第一篇文章,所以如果我没有正确发布它,我很抱歉。谢谢。
最佳答案
让复选框不可选中是不可能的。
当然,你可以使用
document.getElementById("elemnt-id").disabled = true;
或通过
html
中的
disabled
属性,
但总有一种方法可以通过开发人员工具
手动取消选中它们。所以你也应该在服务器上进行一些验证。
关于javascript - 如何制作 'checked' 复选框,无法取消选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49274940/
我是一名优秀的程序员,十分优秀!