2016-08-26 63 views
0

我有这个JS,当选择一定数量的项目将禁用其他选项,并选择这些项目将更新计数,但它的工作很好!当我将它们添加到购物车时,并且在购物车中,我可以进行编辑,因此当我点击编辑时,它会返回到产品页面,并且我有选择的选项是由客户在添加到购物车时选择的但我的计数显示为0和3,其他选项未禁用。检查页面加载使用jQuery检查输入量

我知道我需要做一个页面加载每个/ foreach检查是否有任何复选框检查,如果是这样,并在极限禁用其他等,但它花了我一段时间。我想获得一些帮助,让它到达这个小提琴的位置。我如何检查这些负载?

原始小提琴:

https://jsfiddle.net/ate9a04u/2/

JS:

$(document).ready(function() { 
    var maxAllowed = 3; 
    $(".rmax").html(maxAllowed); 

    $(".subscribtion-content input.checkbox").change(function() { 
    var checkBox = $(".subscribtion-content input.checkbox") 
    var cnt = $(".subscribtion-content input.checkbox:checked").length; 
    if (cnt == maxAllowed) { 
     checkBox.not(':checked').prop('disabled', true); 
    } else { 
     checkBox.not(':checked').prop('disabled', false); 
    } 

    $(".rcount").html(cnt); 
    }); 
}); 
+0

增加了一个复选框已经在这里检查:https://开头的jsfiddle .net/ate9a04u/4/- 1中的3个复选框只需要更新计数值,并且https://jsfiddle.net/ate9a04u/5/有3个默认选择,所以应该说3的3和禁用其他人,直到一个取消选择。感谢先进的家伙! – James

回答

2

认为你说你想要的.change()处理程序运行不只是当一个复选框相同的处理被点击,但也在页面加载。

如果是这样,只需手动触发.change()在现有的准备处理程序绑定后立即处理程序自己一次:

$(document).ready(function() { 
    var maxAllowed = 3; 
    $(".rmax").html(maxAllowed); 

    $(".subscribtion-content input.checkbox").change(function() { 
    var checkBox = $(".subscribtion-content input.checkbox") 
    var cnt = $(".subscribtion-content input.checkbox:checked").length; 
    if (cnt == maxAllowed) { 
     checkBox.not(':checked').prop('disabled', true); 
    } else { 
     checkBox.not(':checked').prop('disabled', false); 
    } 

    $(".rcount").html(cnt); 
    }).change(); // <--- this is all you need to add 
}); 

演示:https://jsfiddle.net/ate9a04u/6/

+0

哇,那简直太令人难以置信!我刚刚开始写一个每个循环,以及...甚至不需要!谢了哥们!不记得那个:) – James

+0

不客气。请注意,您可以在不丢失任何可读性的情况下让函数稍微短一些 - 以下版本可避免重复使用'“.subscribetion-content input.checkbox”'选择器并免除if/else:https://jsfiddle.net/ate9a04u/7 / – nnnnnn