gpt4 book ai didi

javascript - 使用 Javascript 刷新静态 Div

转载 作者:可可西里 更新时间:2023-11-01 13:21:13 27 4
gpt4 key购买 nike

我很好奇这是否可能...

通过搜索,我找到了 this问题在这里,但它似乎与我的困境有点不同。

对于那些不关心查看帖子的人,有人试图通过按下单选按钮(放置在被替换的同一个 div 中)来刷新 div。从答案看来,它似乎是成功的。

我的问题

我正在从事以这种方式设置的元素:

  • 一排单选按钮,指示他们想要选择一周中的多少天(3 天或 5 天),或仅选择 1 天。
  • 如果用户选择 1 day,则该行下方有一个不可见的 div,不会出现。
  • 如果用户选择 3 或 5 天,一个不可见的 div 将显示在该行下方,另一行包含一周中的几天。
  • 如果用户选择3 天,他们只能点击其中的 3 天,然后禁用其他 4 天(这些“天”按钮是复选框)
  • 如果用户选择 5 天,您猜对了,他们可以选择 5 天。
  • 如果用户随后重新选择 3 天,则他们必须取消选择所有日期,然后重新选择它们以强制执行 3 天限制,考虑到他们'已经选择了 5 天 被选中的日期。
  • 当一个复选框被选中时,它的 CSS 样式会被激活,然后它的颜色会改变。

我想做什么

我试图让我的布局以这种方式工作:

  • 如果用户选择 5 天,照常进行。
  • 如果用户then 选择3 days,我希望不可见的 div(现在可见,因为 one day 不是选择的选项)刷新自身:我的意思是删除 CSS 样式并取消选中所有复选框。

我的代码

$("document").ready(function() {
$('input[name=timing]').on('change', function() {
if ($(this).prop('id') == "one") {
$('#recurrence_time').html('One Time');
$('.day-selections').hide();
} else if ($(this).prop('id') == "thrice") {
$('#recurrence_time').html('3 Times a Week');
$('.day-selections').show();
} else if ($(this).prop('id') == "once") {
$('#recurrence_time').html('Once a Week');
$('.day-selections').hide();
} else if ($(this).prop('id') == "custom") {
$('#recurrence_time').html('Custom');
$('.day-selections').show();
}
});
});

$(":checkbox[name=day]").change(function() {
if ($('input#thrice').is(':checked')) {
var len = 3;
} else if ($('input#custom').is(':checked')) {
var len = 5;
}
if ($(":checkbox[name=day]:checked").length == len) {
$(':checkbox:not(:checked)').prop('disabled', true);
} else {
$(':checkbox:not(:checked)').prop('disabled', false);
}
});

function updateHighlightRadio() {
var selected = this.parentNode.parentNode.getElementsByClassName("selected")[0];
if (selected) selected.className = selected.className.replace(" selected", "");
this.parentNode.className += " selected";
}

window.onload = function() {
var radios = document.querySelectorAll("input[type=radio]");
for (var i = 0; i < radios.length; ++i) {
radios[i].onchange = updateHighlightRadio;
}
}

$("input[type='checkbox']").change(function() {
$(this).closest("label").toggleClass(" selected");
});
.selected {
background-color: #FF8C00;
color: #FFFFFF;
}

.how-often p {
font-weight: bold;
text-align: left;
display: inline;
float: left;
}


/* button label */

.recurrence {
border-radius: 8px;
padding: 1em;
margin: 0.5em;
border-radius: 5px;
background-color: #ffd199;
color: #FFFFFF;
cursor: pointer;
display: inline-block;
width: 115px;
text-align: center;
font-size: 12px;
}


/* remove radio button */

.recurrence input {
visibility: hidden;
position: absolute;
}


/* color change when hovering */

.recurrence:hover {
background-color: #FF8C00;
}

.days {
border-radius: 8px;
padding: 1em;
margin: 0.5em;
border-radius: 5px;
background-color: #ffd199;
color: #FFFFFF;
cursor: pointer;
display: inline-block;
text-align: center;
font-size: 12px;
width: 75px;
}


/* remove radio button */

.days input {
visibility: hidden;
position: absolute;
}


/* color change when hovering */

.days:hover {
background-color: #FF8C00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="how-often pricing">
<p>How often?</p>
<label class="recurrence">
<input required id="one" name="timing" type="radio">Once
</label>
<label class="recurrence">
<input id="once" name="timing" type="radio">Once a week
</label>
<label class="recurrence">
<input id="thrice" name="timing" type="radio">3 Times a week
</label>
<label class="recurrence">
<input id="custom" name="timing" type="radio">Custom
</label>
<hr>
</div>

<!--start day selection section-->
<div class="day-selections" style="display: none;">
<p>Which days?</p>
<label class="days">
<input id="mon" name="day" type="checkbox">
Monday
</label>
<label class="days">
<input id="tue" name="day" type="checkbox">
Tuesday
</label>
<label class="days">
<input id="wed" name="day" type="checkbox">
Wednesday
</label>
<label class="days">
<input id="thu" name="day" type="checkbox">
Thursday
</label>
<label class="days">
<input id="fri" name="day" type="checkbox">
Friday
</label>
<hr>
</div>

注意:由于某种原因,在我的代码段中选择按钮后,我无法让按钮保持新颜色...

最佳答案

给你。您需要进行的更改:

  • 按照演示添加类和 ID,而不是使用 javascript,您可以只使用 CSS :checked 选择器并在选择时更改样式。

  • 保持你的标签和输入分开而不是嵌套,这样你就可以使用标签中的 for 属性连接到复选框并使用 CSS display:none 隐藏复选框.

  • 要在选择另一个单选按钮时取消选中复选框,只需确保从所有复选框中删除选中的属性,如每个 if-else 条件的代码所示 $('input.day') .removeAttr('checked'); ,比较每个单选按钮的限制值,如果超过限制,则使用代码并将其返回 false,这样就不能再选择复选框了。

    if ($(this).siblings(':checked').length >= limit) {
    this.checked = false;
    }

$("document").ready(function() {

$(".day-selections").hide();
var limit = 0;
$(':radio').click(function() {
if ($('.notone').is(':checked')) {
$(".day-selections").show();
if ($('#thrice').is(':checked')) {
limit = 3;
$('input.day').removeAttr('checked');
$('input.day').on('change', function(evt) {
if ($(this).siblings(':checked').length >= limit) {
this.checked = false;
}
});
} else if ($('#custom').is(':checked')) {
limit = 5;
$('input.day').removeAttr('checked');
$('input.day').on('change', function(evt) {
if ($(this).siblings(':checked').length >= limit) {
this.checked = false;
}
});
}
} else {
$('input.day').removeAttr('checked');
$(".day-selections").hide();
}
});

});
.selected {
background-color: #FF8C00;
color: #FFFFFF;
}

.how-often p {
font-weight: bold;
text-align: left;
display: inline;
float: left;
}


/* button label */

.recurrence {
border-radius: 8px;
padding: 1em;
margin: 0.5em;
border-radius: 5px;
background-color: #ffd199;
color: #FFFFFF;
cursor: pointer;
display: inline-block;
width: 115px;
text-align: center;
font-size: 12px;
}


/* remove radio button */

.recurrence input {
visibility: hidden;
position: absolute;
}


/* color change when hovering */

.recurrence:hover {
background-color: #FF8C00;
}

.days {
border-radius: 8px;
padding: 1em;
margin: 0.5em;
border-radius: 5px;
background-color: #ffd199;
color: #FFFFFF;
cursor: pointer;
display: inline-block;
text-align: center;
font-size: 12px;
width: 75px;
}

.day:checked+.days {
background-color: #FF8C00;
}

.option {
display: none;
}

.option:checked+.recurrence {
background-color: #FF8C00;
}


/* remove radio button */

.day {
display: none;
}

.days-selection {
display: flex;
}


/* color change when hovering */

.days:hover {
background-color: #FF8C00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="how-often pricing">
<p>How often?</p>

<input required id="one" class="option" name="timing" type="radio">
<label class="recurrence" for="one">Once</label>

<input id="once" name="timing" class="option" type="radio">
<label class="recurrence" for="once">Once a week</label>

<input id="thrice" class="notone option" name="timing" type="radio">
<label class="recurrence" for="thrice">3 Times a week</label>

<input id="custom" class="notone option" name="timing" type="radio">
<label class="recurrence" for="custom">Custom</label>
<hr>
</div>
<!--start day selection section-->
<div class="day-selections" style="display: none;">
<input id="mon" class="day" name="day" type="checkbox">
<label class="days" for="mon">Monday
</label>
<input id="tue" class="day" name="day" type="checkbox">
<label class="days" for="tue">Tuesday
</label>
<input id="wed" class="day" name="day" type="checkbox">
<label class="days" for="wed">Wednesday
</label>
<input id="thu" class="day" name="day" type="checkbox">
<label class="days" for="thu">Thursday</label>
<input id="fri" class="day" name="day" type="checkbox">
<label class="days" for="fri">Friday
</label>
<hr>
</div>

关于javascript - 使用 Javascript 刷新静态 Div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47791085/

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