【问题标题】:Showing certain divs on multiple checkbox selection is not working在多个复选框选择上显示某些 div 不起作用
【发布时间】:2018-10-29 07:35:59
【问题描述】:

我有一个包含七个复选框的部分,它们是星期日、星期一、星期二、星期三、星期四、星期五和星期六。我还有另外两个带有其他复选框的部分,它们是上午会议部分和晚上会议部分。

现在我需要做的是,如果有人在 sessionDays 中选择从周日到周五的任何一天,那么它应该同时显示早课部分和晚会部分。但如果有人选择周六或周日复选框,它应该只显示上午会议部分。

我曾尝试使用以下代码执行此操作,但它仅在星期一选择中显示早晚部分。如果选择了其他日期,它不会显示任何内容。

jQuery(function($){
      //Assigning DIVs & Fields to variable
      
        var sessionDays = $('.sessionDays');
          var sessionSunday = $('#sessionSunday');
          var sessionMonday = $('#sessionMonday');
          var sessionTuesday = $('#sessionTuesday');
          var sessionWednesday = $('#sessionWednesday');
          var sessionThursday = $('#sessionThursday');
          var sessionFriday = $('#sessionFriday');
          var sessionSaturday = $('#sessionSaturday');
        var sessionTime = $('.sessionTime');
          var sessionMorning = $('.sessionMorning');
            var eightnine = $('#eight-nine');
            var nineten = $('#nine-ten');
            var teneleven = $('#teneleven');
            var eleventwelve = $('#eleven-twelve');
          var sessionEvening = $('.sessionEvening');
            var fourfive = $('#four-five');
            var fivesix = $('#five-six');
            var sixseven = $('#six-seven');
            var seveneight = $('#seven-eight');

      //Hide required DIVs
      sessionEvening.hide();
      sessionMorning.hide();
      sessionDays.hide();

      $("#selectSessionType").change(function(){
        if( !$(this).val() ) {
          sessionDays.hide();
        } else {
          sessionDays.show();
        }
      }).change();

      $(sessionMonday, sessionTuesday, sessionWednesday, sessionThursday, sessionFriday).change(function() {
          if( sessionMonday.is(':checked') == true || sessionTuesday.is(':checked') == true || sessionWednesday.is(':checked') == true || sessionThursday.is(':checked') == true || sessionFriday.is(':checked') == true ) {
              sessionMorning.show();
              sessionEvening.show();
          } else if ( sessionSaturday.is(':checked') == true || sessionSunday.is(':checked') == true) {
            sessionMorning.show();
          } else {
            sessionMorning.hide();
            sessionEvening.hide();
          }
      });
  });
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="age underEighteen">
  <h3>Under 18 Class Selection</h3>
  <div class="form-row">
    <div class="form-group col-md-4">
      <label for="selectSessionType">Choose Session Type <span>*</span></label>
      <select class="form-control" id="selectSessionType">
        <option selected="selected" value="">Select Session Type</option>
        <option value="beginners">Beginners</option>
        <option value="hourly">Hourly</option>
        <option value="monthly">Monthly</option>
      </select>
    </div>
    <div class="form-group col-md-4">
      <div class="days sessionDays">
      <label>Select Session Days</label>
      <p class="text-muted">Select the specific days you want to come for training.</p>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" value="" id="sessionSunday">
        <label class="form-check-label" for="sessionSunday">
          Sunday
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" value="" id="sessionMonday">
        <label class="form-check-label" for="sessionMonday">
          Monday
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" value="" id="sessionTuesday">
        <label class="form-check-label" for="sessionTuesday">
          Tuesday
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" value="" id="sessionWednesday">
        <label class="form-check-label" for="sessionWednesday">
          Wednesday
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" value="" id="sessionThursday">
        <label class="form-check-label" for="sessionThursday">
          Thursday
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" value="" id="sessionFriday">
        <label class="form-check-label" for="sessionFriday">
          Friday
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" value="" id="sessionSaturday">
        <label class="form-check-label" for="sessionSaturday">
          Saturday
        </label>
      </div>
    </div>
  </div>
  <div class="form-group col-md-4">
    <div class="sessionTime">
      <div class="sessionMorning">
        <label>Select Session Time</label>
        <p style="font-weight:bold;">Morning Session</p>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" value="" id="eight-nine">
          <label class="form-check-label" for="eight-nine">8:00 AM - 9:00 AM</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" value="" id="nine-ten">
          <label class="form-check-label" for="nine-ten">9:00 AM - 10:00 AM</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" value="" id="ten-eleven">
          <label class="form-check-label" for="ten-eleven">10:00 AM - 11:00 AM</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" value="" id="eleven-twelve">
          <label class="form-check-label" for="eleven-twelve">11:00 AM - 12:00 PM</label>
        </div>
      </div>
      <div class="sessionEvening">
        <p style="font-weight:bold;">Evening Session</p>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" value="" id="four-five">
          <label class="form-check-label" for="four-five">4:00 PM - 5:00 PM</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" value="" id="five-six">
          <label class="form-check-label" for="five-six">5:00 PM - 6:00 PM</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" value="" id="six-seven">
          <label class="form-check-label" for="six-seven">6:00 PM - 7:00 PM</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" value="" id="seven-eight">
          <label class="form-check-label" for="seven-eight">7:00 PM - 8:00 PM</label>
        </div>
      </div>
    </div>
  </div>
</div>
</div>

工作示例:https://jsfiddle.net/humanware/Lpmv5vyv/

【问题讨论】:

  • 您发布的代码中的所有内容似乎都被隐藏了。我认为“用户信息”输入不包括在内。你能创建一个working example 来演示这个问题吗?
  • 这与您在 JS 聊天室中要求的不同 - 您是希望周日和周六只显示晚上,还是只显示早上?
  • @showdev 这里是工作示例:jsfiddle.net/humanware/Lpmv5vyv
  • @TylerH 嘿,泰勒,欢迎您。如果有人从 SessionDays 复选框中选择了周六或周日,我将尝试显示早间和晚间部分。
  • @MilanUptech 感谢您的澄清。我们对您的帖子进行了一些编辑以反映这些说明!

标签: javascript jquery html css bootstrap-4


【解决方案1】:

根据您的要求,我在 jquery 中使用 map 并将值分配给复选框,代码如下:

jQuery(function ($) {
    var sessionDays = $('.sessionDays');
    var sessionMorning = $('.sessionMorning');
    var sessionEvening = $('.sessionEvening');
    //Hide required DIVs
    sessionDays.hide();
    sessionMorning.hide();
    sessionEvening.hide();

    $("#selectSessionType").change(function () {
        if (!$(this).val()) {
            sessionDays.hide();
        } else {
            sessionDays.show();
        }
    }).change();
    $(".sessionDays").change(function () {
        sessionMorning.hide();
        sessionEvening.hide();
        $('.form-check-input:checked').map(function () {
            if (
                this.value == 'Monday' ||
                this.value == 'Tuesday' ||
                this.value == 'Wednesday' ||
                this.value == 'Thursday' ||
                this.value == 'Friday') {
                sessionMorning.show();
                sessionEvening.show();
                exit();
            } else if (this.value == 'Saturday' ||
                this.value == 'Sunday') {
                sessionMorning.show();
                sessionEvening.hide();
            } else {
                sessionMorning.hide();
                sessionEvening.hide();
            }
        });
    }).change();}

编辑 HTML:

<div class="age underEighteen">
<h3>Under 18 Class Selection</h3>
<div class="form-row">
    <div class="form-group col-md-4">
        <label for="selectSessionType">Choose Session Type <span>*</span></label>
        <select class="form-control" id="selectSessionType">
            <option selected="selected" value="">Select Session Type</option>
            <option value="beginners">Beginners</option>
            <option value="hourly">Hourly</option>
            <option value="monthly">Monthly</option>
        </select>
    </div>
    <div class="form-group col-md-4">
        <div class="days sessionDays">
            <label>Select Session Days</label>
            <p class="text-muted">Select the specific days you want to come for training.</p>
            <div class="form-check">
                <input class="form-check-input" type="checkbox" value="Sunday" id="sessionSunday">
                <label class="form-check-label" for="sessionSunday">
                    Sunday
                </label>
            </div>
            <div class="form-check">
                <input class="form-check-input" type="checkbox" value="Monday" id="sessionMonday">
                <label class="form-check-label" for="sessionMonday">
                    Monday
                </label>
            </div>
            <div class="form-check">
                <input class="form-check-input" type="checkbox" value="Tuesday" id="sessionTuesday">
                <label class="form-check-label" for="sessionTuesday">
                    Tuesday
                </label>
            </div>
            <div class="form-check">
                <input class="form-check-input" type="checkbox" value="Wednesday" id="sessionWednesday">
                <label class="form-check-label" for="sessionWednesday">
                    Wednesday
                </label>
            </div>
            <div class="form-check">
                <input class="form-check-input" type="checkbox" value="Thursday" id="sessionThursday">
                <label class="form-check-label" for="sessionThursday">
                    Thursday
                </label>
            </div>
            <div class="form-check">
                <input class="form-check-input" type="checkbox" value="Friday" id="sessionFriday">
                <label class="form-check-label" for="sessionFriday">
                    Friday
                </label>
            </div>
            <div class="form-check">
                <input class="form-check-input" type="checkbox" value="Saturday" id="sessionSaturday">
                <label class="form-check-label" for="sessionSaturday">
                    Saturday
                </label>
            </div>
        </div>
    </div>
    <div class="form-group col-md-4">
        <div class="sessionTime">
            <div class="sessionMorning">
                <label>Select Session Time</label>
                <p style="font-weight:bold;">Morning Session</p>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="" id="eight-nine">
                    <label class="form-check-label" for="eight-nine">8:00 AM - 9:00 AM</label>
                </div>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="" id="nine-ten">
                    <label class="form-check-label" for="nine-ten">9:00 AM - 10:00 AM</label>
                </div>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="" id="ten-eleven">
                    <label class="form-check-label" for="ten-eleven">10:00 AM - 11:00 AM</label>
                </div>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="" id="eleven-twelve">
                    <label class="form-check-label" for="eleven-twelve">11:00 AM - 12:00 PM</label>
                </div>
            </div>
            <div class="sessionEvening">
                <p style="font-weight:bold;">Evening Session</p>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="" id="four-five">
                    <label class="form-check-label" for="four-five">4:00 PM - 5:00 PM</label>
                </div>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="" id="five-six">
                    <label class="form-check-label" for="five-six">5:00 PM - 6:00 PM</label>
                </div>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="" id="six-seven">
                    <label class="form-check-label" for="six-seven">6:00 PM - 7:00 PM</label>
                </div>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" value="" id="seven-eight">
                    <label class="form-check-label" for="seven-eight">7:00 PM - 8:00 PM</label>
                </div>
            </div>
        </div>
    </div>
</div>

【讨论】:

  • 它几乎对我有用,但我需要从值属性携带值进行计算。当您选择星期六时,它会显示上午部分,但如果您选择其他星期六,则不会显示晚上。但它在星期天工作得很好。在这里试试:jsfiddle.net/Lpmv5vyv/1
  • 嗨 @MilanUptech 我刚刚在 sessionEvening.show() 函数下方的第一个 if 条件下添加了 exit() 函数,现在它将根据您的要求正常工作。你也可以在这里看到:jsfiddle.net/raviook/zzjj832b/3
【解决方案2】:

我在周五和周六的复选框中添加了周末课程,在其他日子添加了工作日课程。

编辑: HTML:

<div class="form-group col-md-4">
    <div class="days sessionDays">
        <label>Select Session Days</label>
        <p class="text-muted">Select the specific days you want to come for training.</p>
        <div class="form-check">
            <input class="form-check-input weekend" type="checkbox" value="" id="sessionSunday">
            <label class="form-check-label" for="sessionSunday">
            Sunday
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input weekday" type="checkbox" value="" id="sessionMonday">
            <label class="form-check-label" for="sessionMonday">
            Monday
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input weekday" type="checkbox" value="" id="sessionTuesday">
            <label class="form-check-label" for="sessionTuesday">
            Tuesday
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input weekday" type="checkbox" value="" id="sessionWednesday">
            <label class="form-check-label" for="sessionWednesday">
            Wednesday
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input weekday" type="checkbox" value="" id="sessionThursday">
            <label class="form-check-label" for="sessionThursday">
            Thursday
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input weekday" type="checkbox" value="" id="sessionFriday">
            <label class="form-check-label" for="sessionFriday">
                Friday
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input weekend" type="checkbox" value="" id="sessionSaturday">
            <label class="form-check-label" for="sessionSaturday">
                Saturday
            </label>
        </div>
    </div>
</div>
<div class="form-group col-md-4">
    <div class="sessionTime">
        <div class="sessionMorning">
            <label>Select Session Time</label>
            <p style="font-weight:bold;">Morning Session</p>
            <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="eight-nine">
            <label class="form-check-label" for="eight-nine">8:00 AM - 9:00 AM</label>
            </div>
            <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="nine-ten">
            <label class="form-check-label" for="nine-ten">9:00 AM - 10:00 AM</label>
            </div>
            <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="ten-eleven">
            <label class="form-check-label" for="ten-eleven">10:00 AM - 11:00 AM</label>
            </div>
            <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="eleven-twelve">
            <label class="form-check-label" for="eleven-twelve">11:00 AM - 12:00 PM</label>
            </div>
        </div>
        <div class="sessionEvening">
            <p style="font-weight:bold;">Evening Session</p>
            <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="four-five">
            <label class="form-check-label" for="four-five">4:00 PM - 5:00 PM</label>
            </div>
            <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="five-six">
            <label class="form-check-label" for="five-six">5:00 PM - 6:00 PM</label>
            </div>
            <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="six-seven">
            <label class="form-check-label" for="six-seven">6:00 PM - 7:00 PM</label>
            </div>
            <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="seven-eight">
            <label class="form-check-label" for="seven-eight">7:00 PM - 8:00 PM</label>
            </div>
        </div>
    </div>
</div>

那么这应该是所有的jQuery:

jQuery(function ($) {
    $('.sessionMorning').hide();
    $('.sessionEvening').hide();

    $('.weekday, .weekend').on('change', function () {
        var weekdayChecked = false;
        var weekendChecked = false;
        $('.weekday, .weekend').each(function (index, input) {
            if ($(this).hasClass('weekday') && $(this).is(':checked')) {
                weekdayChecked = true;
            }
            else if ($(this).hasClass('weekend') && $(this).is(':checked')) {
                weekendChecked = true;
            }

            if (weekdayChecked) {
                $('.sessionMorning').show();
                $('.sessionEvening').show();
            }
            else if (weekendChecked) {
                $('.sessionMorning').show();
                $('.sessionEvening').hide();
            }
            else {
                $('.sessionMorning').hide();
                $('.sessionEvening').hide();
            }

        });
    });
});

https://jsfiddle.net/4h7z5ovj/1/

【讨论】:

  • 您好 Thijn,如果您在此处包含所有代码,而不是仅包含其中的一部分,将会更有帮助。当 JSFiddle 出现故障时(以前发生过这种情况),如果一半的代码隐藏在那里,这个答案就会变得不那么有用。
  • 另外,请参阅问题下 OP 的最新澄清评论 - 他们只想显示周六和周日的 Morning,而不仅仅是周六。我也会编辑问题以在那里澄清它。您的代码目前遵循原始问题对周日早间和晚间节目的测试。
  • 我现在将添加 html。我将周末课程添加到星期五而不是星期日,将随着我的更新进行更改。
  • 它在 jsfiddle 中工作,但在我的网站中没有,因为我的 WordPress 网站有 jquery 版本 1.12.4,而 jsfiddle 使用的是 jquery 3。有什么解决方案吗?
  • 会报错吗?我将 jQuery 更改为 1.12.4,它仍然有效:jsfiddle.net/4h7z5ovj/10
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
相关资源
最近更新 更多