Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何制作';选中';复选框,不可能取消选中_Javascript_Checkbox - Fatal编程技术网

Javascript 如何制作';选中';复选框,不可能取消选中

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

基本上,我用纯JS创建了一个复选框范围。我不明白的是,如何使选中范围不可能取消选中。例如,您选中了25。因此,数字34不可能取消选中,但是25可以取消选中

<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>