Javascript jQuery计算天数并隐藏复选框
我有一个持续时间,例如3天,7个复选框代表一周中的每一天。 我希望能够检查一天,然后隐藏接下来的2天(总共3天)Javascript jQuery计算天数并隐藏复选框,javascript,jquery,Javascript,Jquery,我有一个持续时间,例如3天,7个复选框代表一周中的每一天。 我希望能够检查一天,然后隐藏接下来的2天(总共3天) 如果我们考虑3天的持续时间: 我检查星期一,然后星期二和星期三将被隐藏。 然后我可以检查星期四,然后将隐藏星期五和星期六: 我写了以下部分工作: var toHide = new Array(0,0,0,0,0,0,0,0); $('.days').change(function() { var val = $(this).val(); var duration = $('#
如果我们考虑3天的持续时间: 我检查星期一,然后星期二和星期三将被隐藏。 然后我可以检查星期四,然后将隐藏星期五和星期六:
我写了以下部分工作: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++;
}
}
}
var-toHide=新数组(0,0,0,0,0,0,0);
$('.days').change(函数(){
var val=$(this.val();
var duration=$('#duration').val();
if($('#check'+val).prop('checked')){
日程选择(val,持续时间,'on');
}否则{
日程选择(val、持续时间、“关闭”);
}
});
功能计划选择(id、持续时间、模式){
var totalDays=持续时间;
如果(总天数>1){
总天数--;
var next=parseInt(id)+1;
对于(i=1;i7){next=1;}
如果(模式=='on'){
toHide[next]=1;
$('#选中'+下一步).hide();
}否则{
toHide[next]=0;
$(“#选中“+下一步).show();
}
next++;
}
}
}
这里的问题是,如果您要检查星期一,那么星期二和星期三将被隐藏,但是如果您随后检查星期六,则会发生冲突,因为星期天和星期一将被隐藏,而星期二和星期三将保持隐藏:
请参见
任何指向正确方向的指针都很受欢迎如果您同时隐藏预览日并取消选中隐藏元素,可能是一个很好的解决方案
function scheduleSelection(id,duration,mode) {
//var oneDay = 86400;
var totalDays = duration;
if(totalDays>1) {
totalDays--;
var next = parseInt(id)+1;
var prev = parseInt(id)-1;
for(i=1;i<=totalDays;i++) {
if(next>7) { next = 1; }
if(prev<1) { prev = 7; }
if(mode=='on') {
toHide[next] = 1;
toHide[prev] = 1
$('#check'+next).hide();
$('#check'+next).attr("checked",false);
$('#check'+prev).hide();
$('#check'+prev).attr("checked",false);
}else{
toHide[next] = 0;
toHide[prev] = 0;
$('#check'+prev).show();
$('#check'+next).show();
}
next++;
prev--;
}
}
}
功能计划选择(id、持续时间、模式){
//var一天=86400;
var totalDays=持续时间;
如果(总天数>1){
总天数--;
var next=parseInt(id)+1;
var-prev=parseInt(id)-1;
对于(i=1;i7){next=1;}
如果(prev我喜欢巴勃罗的答案。我想你应该用它来代替。我的解决方案有效,但有点脏。不管怎样,它是这样的:
编辑:我触发单击后再次触发更改的原因是由于某种原因,循环在函数再次运行后停止。可能与变量名相同或其他原因有关,我不确定,但这应该可以解决问题。在Sun
上选中时会发生什么情况?您期望的分辨率是多少ult?检查星期日时,与星期一重叠(已检查),所以我希望星期一取消选中,只保留星期一、星期二hidden@Sandersen在您的文本框中,值为3,但隐藏复选框为2,这是必需的功能吗?@ameenulla0007想法是,选中的日期包含在天数中,这就是为什么我从totalDays中删除1。太棒了。这正是我要找的。所以谢谢
if($('#check'+next).is(":checked")) {
$('#check'+next).trigger('click');
$('#check'+next).hide();
$('#check'+id).trigger('change');
}