Javascript 如何制作';选中';复选框,不可能取消选中
基本上,我用纯JS创建了一个复选框范围。我不明白的是,如何使选中范围不可能取消选中。例如,您选中了2和5。因此,数字3和4不可能取消选中,但是2和5可以取消选中Javascript 如何制作';选中';复选框,不可能取消选中,javascript,checkbox,Javascript,Checkbox,基本上,我用纯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> &l
<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;
}
- 一个
- 两个
- 三
- 四
- 五
- 六
- 七
//JavaScript
var el=document.getElementsByTagName(“输入”);
var lastChecked=null;
//迭代每个“输入”元素并添加事件侦听器=单击
对于(变量i=0;i
谢谢你们的帮助。顺便说一下,这是我第一次在stackoverflow上发表文章,如果我没有正确发表,我非常抱歉。谢谢。通过属性选择器获取元素
for (let i=start; i<=end; i++){
document.querySelector(`[value="${i}"]`).disabled = true;
}
它将得到一个类似HTML的
<input type="checkbox" value="7" disabled>
不可能使复选框不可勾选 当然,你可以用
document.getElementById(“elemnt id”).disabled=true代码>
或通过
html
中的属性已禁用
但总有一种方法可以通过开发人员工具
手动取消选中它们。所以您也应该在服务器上进行一些验证。您最多需要选中两个复选框?如果是这样,(假设max为2),那么我们将遍历未检查的输入项循环,并禁用它们。某种双向绑定库(即Vue)将使这变得微不足道。你只限于纯JS吗?@Jayanth它可以是一个更大的范围。例如从1到7。但关键是要使范围“不可勾选”。所以在本例中,它将是数字2、3、4、5、6。@Alex是的,我仅限于纯JS。非常感谢@htshame@JustMartin你应该接受最有用的答案
<input type="checkbox" value="7" disabled>