限制复选框为2,但移动选择,而不是阻止它

问题描述:

我想允许客户端只选择2复选框形式的一组4,但如果他们选择第三个从2选择其中之一已经选择将移至第三位。限制复选框为2,但移动选择,而不是阻止它

有本网站为例(它最多可以在手机屏幕大小) https://www.office-coffee.co.uk/coffee-machines-for-business/comparison/

我到目前为止这样的代码:

$(document).ready(function() { 
 
    var theCheckboxes = $(".pricing-levels-2 input[type='checkbox']"); 
 
    theCheckboxes.click(function() { 
 
    if (theCheckboxes.filter(":checked").length > 2) 
 
     $(this).removeAttr("checked"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="pricing-levels-2"> 
 
    <p><strong>Which level would you like?</strong></p> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 1<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 2<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 3<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 4<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 5<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 6<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 7<br> 
 
</div>

+0

找不到提及的网站上的复选框.. – void

+0

哪一个应该移动到下一个?第一个还是第二个? – void

+0

你必须缩小屏幕直到做到移动模式,然后点击比较“COMPARE OTHERS”...对不起,我忘了提到这一点。 –

您可以使用DOM遍历方法将目标复选框设置为使用.prop(propertyName, value)来设置其checked属性。下面例子中我有操纵的第一个复选框财产

$(document).ready(function() { 
 
    var theCheckboxes = $(".pricing-levels-2 input[type='checkbox']"); 
 
    theCheckboxes.change(function() { 
 
    if (theCheckboxes.filter(":checked").length > 2) { 
 
     theCheckboxes.filter(":checked").not(this).eq(0).prop('checked', false); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="pricing-levels-2"> 
 
    <p><strong>Which level would you like?</strong></p> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 1<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 2<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 3<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 4<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 5<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 6<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 7<br> 
 
</div>

+0

非常接近,但对不起,我想我不是很清楚。当点击第三个时,第一个移动到第三个,然后第二个“成为”第一个,所以当客户点击第四个时,第二个移动到第四个。基本上就是这个咖啡店里的一样。 –

要删除第一个可以使用theCheckboxes.filter(":checked:first").removeAttr("checked");

例如:

$(document).ready(function() { 
 
    var theCheckboxes = $(".pricing-levels-2 input[type='checkbox']"); 
 
    theCheckboxes.click(function() { 
 
    if (theCheckboxes.filter(":checked").length > 2) 
 
     theCheckboxes.filter(":checked:first").removeAttr("checked"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="pricing-levels-2"> 
 
    <p><strong>Which level would you like?</strong></p> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 1<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 2<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 3<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 4<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 5<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 6<br> 
 
    <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 7<br> 
 
</div>

+0

非常接近,但对不起,我想我不是很清楚。当点击第三个时,第一个移动到第三个,然后第二个“成为”第一个,所以当客户点击第四个时,第二个移动到第四个。基本上就是这个咖啡店里的一样 –