jQuery - 如果值与数组中的元素匹配,则禁用复选框

Posted

技术标签:

【中文标题】jQuery - 如果值与数组中的元素匹配,则禁用复选框【英文标题】:jQuery - disable checkbox if value match to elements in an array 【发布时间】:2020-04-06 10:49:03 【问题描述】:

我正在尝试在页面加载时禁用复选框,但条件是复选框值与我的数据库中的记录匹配。

我找到了To disable the selective check box on page load jquery 和http://jsfiddle.net/R27wq/1/。他和我的情况之间的唯一区别是复选框被禁用的情况。对于他的情况,如果最后一列的值等于 1.0,复选框将被禁用。

我想做同样的事情,除非我想禁用复选框,如果它的值与我的数据库中的记录匹配。

下面是我的数据库:

以下是我复选框中代码的 sn-p:

<td>
   <input type="checkbox" class="seats" name="selected[]" value="A26">
</td>
<td>
   <input type="checkbox" class="seats" name="selected[]" value="A25">
</td>

网页上的复选框如下所示:

如果复选框值与“保留”列匹配,则应将其禁用。

如何针对我的情况实施相同的概念?我在想也许我可以将数据库中的值存储在一个数组中,然后从那里将所有数组元素与所有复选框值进行比较?或者,还有更好的方法?有人可以帮我吗

【问题讨论】:

【参考方案1】:

使用 JSFiddle 中的代码,只需添加 $(this).find("input[type='checkbox']").attr('checked','true'); 和一个数组以及一个 map()forEach() 即可检查。

$(function() 
  var reserved = ["A26", "A28"];
  var seats = document.getElementsByClassName('seats');
  for (var i = 0; i < seats.length; i++) 
    reserved.map(function(v) 
      if (seats[i].value === v) 
        seats[i].setAttribute("disabled", "true");
        seats[i].setAttribute("checked", "true");
      
    );
  
);
p 
  position: relative;
  top: -35px;
  left: 20px;

body 
  width: 500px;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" class="seats" name="selected[]" value="A26"><p>A26</p>
<input type="checkbox" class="seats" name="selected[]" value="A27"><p>A27</p>
<input type="checkbox" class="seats" name="selected[]" value="A28"><p>A28</p>
<input type="checkbox" class="seats" name="selected[]" value="A29"><p>A29</p>

【讨论】:

我突然有一个问题。如果我选择其他未禁用的复选框,则先前禁用的框,例如 A25 和 A26,将突然启用。为什么会这样? @the.mungk 不知道。你能发布一些可能是问题的代码吗?

以上是关于jQuery - 如果值与数组中的元素匹配,则禁用复选框的主要内容,如果未能解决你的问题,请参考以下文章

将数组的值与字符串 PHP 匹配

R - 如果列值与字符向量中的任何值匹配,则返回它旁边的列 [重复]

如果字符串数组中的列名在字符串数组中具有匹配的值,则获取DataRow

将一个数组值与另一个多维数组匹配,然后从多维数组中获取值

如果值与在 r 中有条件删除的值匹配,则删除行

在一个函数中为两个 jquery 语句开票