我有这个JS,当选择一定数量的项目时将禁用其他选项,而选择这些项目将更新计数,但是效果很好!我将这些添加到购物车时,在购物车中我可以进行编辑,因此当我点击编辑时,它会返回到产品页面,我会选择客户在添加时选择的选项购物车,但我的计数显示0为3,其他选项未被禁用。
我知道我需要在页面加载时执行每个/ 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 :(得分: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
});
处理程序:
public static void dimBehind(PopupWindow popupWindow) {
View container;
if (VERSION.SDK_INT >= VERSION_CODES.M){
container = (View) popupWindow.getContentView().getParent();
} else {
container = popupWindow.getContentView();
}
if (popupWindow.getBackground() != null) {
container = container.getParent()
}
Context context = popupWindow.getContentView().getContext();
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams p = (WindowManager.LayoutParams) container.getLayoutParams();
p.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND; // add a flag here instead of clear others
p.dimAmount = 0.3f;
wm.updateViewLayout(container, p);
}