限制复选框为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>
您可以使用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>
非常接近,但对不起,我想我不是很清楚。当点击第三个时,第一个移动到第三个,然后第二个“成为”第一个,所以当客户点击第四个时,第二个移动到第四个。基本上就是这个咖啡店里的一样。 –
要删除第一个可以使用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>
非常接近,但对不起,我想我不是很清楚。当点击第三个时,第一个移动到第三个,然后第二个“成为”第一个,所以当客户点击第四个时,第二个移动到第四个。基本上就是这个咖啡店里的一样 –
找不到提及的网站上的复选框.. – void
哪一个应该移动到下一个?第一个还是第二个? – void
你必须缩小屏幕直到做到移动模式,然后点击比较“COMPARE OTHERS”...对不起,我忘了提到这一点。 –