javascript - 如何制作 'checked' 复选框,无法取消选中

标签 javascript checkbox

基本上,我使用纯 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;

}

谢谢大家的帮助。顺便说一句,这是我关于 stackoverflow 的第一篇文章,所以如果我没有正确发布它,我很抱歉。谢谢。

最佳答案

让复选框不可选中是不可能的。

当然,你可以使用

document.getElementById("elemnt-id").disabled = true;

或通过

html 中的

disabled 属性,

但总有一种方法可以通过开发人员工具手动取消选中它们。所以你也应该在服务器上进行一些验证。

关于javascript - 如何制作 'checked' 复选框,无法取消选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49274940/

相关文章:

javascript - 通过基于 Javascript 中第一个数组的元素分组来合并两个数组

java - 如何判断 Selenium for Java 中是否选中了一个复选框?

ios - 如何在 iOS 中创建一个简单的复选框?

javascript - 如何使用 Jquery 在 Sap UI5 中为边框着色

javascript - Android webview 不会一直打开到最后滚动位置

安卓开发 : Checkbox setChecked not working

javascript - 自定义复选框选择限制不起作用

android - 选中复选框的 ListView 中行的位置

javascript 如何将窗口对象传递给函数

javascript - Jasmine 测试中未定义的 AngularJS $scope.$watch 回调函数参数