2个图像选择5个时如何禁用其他图像?

时间:2015-10-03 14:39:43

标签: javascript jquery html

在我的网站中,我想添加一项功能,以便在用户选择2张图像时禁用其他图像。 在我的网站上,我有5张图片。形成这5个图像的用户选择最多2个没有。的图像。 当用户选择2张图像时,其他3张图像将自动禁用。

3 个答案:

答案 0 :(得分:2)

请参阅我在片段上的演示。这是您的答案,希望它能为您提供正确的方向。根据您的需要更改js。我将长度设置为最大值2。

 if (+$("input[name=ItemGrp2]:checked").length > 2)

使用此代码。



$( ".two" ).on( "change", function() {   
    if (+$("input[name=ItemGrp2]:checked").length > 2)
    {
        this.checked=false;
    }    
            
});

ul {
  list-style-type: none;
}

li {
  display: inline-block;
}

input[type="checkbox"][id^="cb"] {
  display: none;
}

label {
  border: 1px solid #fff;
  padding: 10px;
  display: block;
  position: relative;
  margin: 10px;
  cursor: pointer;
}

label:before {
  background-color: white;
  color: white;
  content: " ";
  display: block;
  border-radius: 50%;
  border: 1px solid grey;
  position: absolute;
  top: -5px;
  left: -5px;
  width: 25px;
  height: 25px;
  text-align: center;
  line-height: 28px;
  transition-duration: 0.4s;
  transform: scale(0);
}

label img {
  height: 100px;
  width: 100px;
  transition-duration: 0.2s;
  transform-origin: 50% 50%;
}

:checked + label {
  border-color: #ddd;
}

:checked + label:before {
  content: "✓";
  background-color: grey;
  transform: scale(1);
}

:checked + label img {
  transform: scale(0.9);
  box-shadow: 0 0 5px #333;
  z-index: -1;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<ul>
  <li><input class="two" name="ItemGrp2" type="checkbox" id="cb1" />
    <label for="cb1"><img src="http://lorempixel.com/100/100" /></label>
  </li>
  <li><input class="two" name="ItemGrp2" type="checkbox" id="cb2" />
    <label for="cb2"><img src="http://lorempixel.com/101/101" /></label>
  </li>
  <li><input class="two" name="ItemGrp2" type="checkbox" id="cb3" />
    <label for="cb3"><img src="http://lorempixel.com/102/102" /></label>
  </li>
  <li><input class="two" name="ItemGrp2" type="checkbox" id="cb4" />
    <label for="cb4"><img src="http://lorempixel.com/103/103" /></label>
  </li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

&#13;
&#13;
var $form = $('.form');

var $imgInputs = $form.find('.img-cb');
  
$imgInputs.on('change', function () {
    var isMaxSelected = ($imgInputs.filter(':checked').length >= 2);
    $imgInputs.not(':checked').prop('disabled', isMaxSelected);
});
&#13;
.img-cb {
  display: block;
  position: absolute;
  opacity: 0;
}

.img-cb:disabled + img {
  opacity: 0.3;
}

.img-cb:checked + img {
  outline: 1px solid red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<head>
    <script src="https://code.jquery.com/jquery-2.1.4.js"></script>
    <meta charset="utf-8">
    <title>JS Bin</title>
</head>

<body>
    <form action="" class="form">
        <label>
            <input class="img-cb" type="checkbox">
            <img src="http://placehold.it/150" alt="">
        </label>
        <label>
            <input class="img-cb" type="checkbox">
            <img src="http://placehold.it/150" alt="">
        </label>
        <label>
            <input class="img-cb" type="checkbox">
            <img src="http://placehold.it/150" alt="">
        </label>
        <label>
            <input class="img-cb" type="checkbox">
            <img src="http://placehold.it/150" alt="">
        </label>
        <label>
            <input class="img-cb" type="checkbox">
            <img src="http://placehold.it/150" alt="">
        </label>
    </form>
</body>

</html>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

创建一个事件侦听器,在单击图像时将计数器初始化为零,但仅当计数器不是> = 2时才会增加。同时按下点击的照片的ID(无论如何,对象都会沿着事件传递)

如果计数器达到2,请使用jQuery / native Javascript隐藏不在id列表中的照片。 (这需要为照片提供连续的ID序列,并且还要知道照片的数量,在这种情况下假设是5并且永远不会动态变化)

相关问题