gpt4 book ai didi

javascript - jQuery 计算天数并隐藏复选框

转载 作者:行者123 更新时间:2023-11-30 16:09:17 25 4
gpt4 key购买 nike

我有一个持续时间,例如 3 天,7 个复选框代表一周中的每一天。我希望能够检查一天,然后隐藏接下来的 2 天(总共 3 天)。

enter image description here

如果我们考虑 3 天的持续时间:我检查星期一,然后星期二和星期三将被隐藏。然后我可以检查星期四,然后星期五和星期六将被隐藏:

enter image description here

我写了以下部分有效的内容:

var toHide = new Array(0,0,0,0,0,0,0,0);
$('.days').change(function() {
var val = $(this).val();
var duration = $('#duration').val();
if($('#check'+val).prop('checked')) {
scheduleSelection(val,duration,'on');
}else{
scheduleSelection(val,duration,'off');
}
});

function scheduleSelection(id,duration,mode) {
var totalDays = duration;
if(totalDays>1) {
totalDays--;
var next = parseInt(id)+1;
for(i=1;i<=totalDays;i++) {
if(next>7) { next = 1; }
if(mode=='on') {
toHide[next] = 1;
$('#check'+next).hide();
}else{
toHide[next] = 0;
$('#check'+next).show();
}
next++;
}
}
}

这里的问题是,如果您要检查星期一,那么星期二和星期三将被隐藏,但是如果您随后检查星期六,则会发生冲突,因为星期日和星期一将被隐藏,而星期二和星期三将保持隐藏状态:

enter image description here

请参阅 jsFiddle

感谢任何正确方向的指示

最佳答案

我喜欢 Pablo 的回答。我认为你应该改用它。我的解决方案有效但有点脏。无论如何,它在这里:https://jsfiddle.net/ndaj4x3L/3/

if($('#check'+next).is(":checked")) {
$('#check'+next).trigger('click');
$('#check'+next).hide();
$('#check'+id).trigger('change');
}

编辑:我在触发点击后再次触发更改的原因是由于某种原因在函数再次运行后循环停止。可能与变量名称相同或其他原因有关,我不太确定,但无论如何应该修复它。

关于javascript - jQuery 计算天数并隐藏复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36514372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com