javascript - 如果选择每日(复选框),请取消选择所有其他复选框

标签 javascript jquery html jquery-ui


我创建了电子商务网站,有包问题表格,例如用户可以自定义包。第一个问题中有三个单选按钮:

 1. Daily
 2. Weekly
 3. Monthly

当我选择每日时,会隐藏两个问题,如果我选择每周或每月,则会显示两个问题,这两个问题是:

 1. How many days you need service in a week?
 2. Select the days.

有一张预览卡,让我给你看一下截图,截图如下:
See Screenshot 1
See screenshot 2
See screenshot 3
现在,请参阅第三个(最后一个)屏幕截图,如果我单击返回daily 单选框,那么这 2 个问题将被隐藏但预览卡中不会隐藏文本,我希望如果我单击/单击返回daily 单选按钮,则应取消选中两个问题(我隐藏的问题),并且应从预览中删除文本卡
这是html代码:

<div class="select_package_validity">
    <h5 class="h5-responsive font-weight-bold q1_text"></h5>
    <div class="package_validity_child">
        <div class="custom-control custom-radio custom-control-inline plan_name_daily">
            <input type="radio" class="custom-control-input plan_name" id="daily" name="plan_name_selector" value="Daily">
            <label class="custom-control-label" for="daily">Daily</label>
        </div>
        <div class="custom-control custom-radio custom-control-inline plan_name_weekly">
            <input type="radio" class="custom-control-input plan_name" id="weekly" name="plan_name_selector" value="Weekly">
            <label class="custom-control-label" for="weekly">Weekly</label>
        </div>
        <div class="custom-control custom-radio custom-control-inline plan_name_monthly">
            <input type="radio" class="custom-control-input plan_name" id="monthly" name="plan_name_selector" value="Monthly">
            <label class="custom-control-label" for="monthly">Monthly</label>
        </div>
    </div>
    <input type="hidden" name="plan_name" class="form-control selected_plan_name" />
</div>
<div class="select_days mt-4">
    <h5 class="h5-responsive font-weight-bold q2_text"></h5>
    <div class="custom-control custom-radio custom-control-inline ml-4">
        <input type="radio" class="custom-control-input plan_days" id="5" name="plan_days_selector" value="5">
        <label class="custom-control-label" for="5">5</label>
    </div>
    <div class="custom-control custom-radio custom-control-inline">
        <input type="radio" class="custom-control-input plan_days" id="6" name="plan_days_selector" value="6">
        <label class="custom-control-label" for="6">6</label>
    </div>
    <div class="custom-control custom-radio custom-control-inline">
        <input type="radio" class="custom-control-input plan_days" id="7" name="plan_days_selector" value="7">
        <label class="custom-control-label" for="7">7</label>
    </div>
    <input type="hidden" name="plan_days" class="form-control selected_plan_days" />
</div>
<div class="days_names mt-4">
    <h5 class="h5-responsive font-weight-bold q3_text mb-2"></h5>
    <div class="ml-4">
        <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="monday" name="day_name_selector" value="Monday">
            <label class="custom-control-label" for="monday">Monday</label>
        </div>
        <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="tuesday" name="day_name_selector" value="Tuesday">
            <label class="custom-control-label" for="tuesday">Tuesday</label>
        </div>
        <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="wednesday" name="day_name_selector" value="Wednesday">
            <label class="custom-control-label" for="wednesday">Wednesday</label>
        </div>
        <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="thursday" name="day_name_selector" value="Thursday">
            <label class="custom-control-label" for="thursday">Thursday</label>
        </div>
        <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="friday" name="day_name_selector" value="Friday">
            <label class="custom-control-label" for="friday">Friday</label>
        </div>
        <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="saturday" name="day_name_selector" value="Saturday">
            <label class="custom-control-label" for="saturday">Saturday</label>
        </div>
        <div class="custom-control custom-checkbox">
            <input type="checkbox" class="custom-control-input" id="sunday" name="day_name_selector" value="Sunday">
            <label class="custom-control-label" for="sunday">Sunday</label>
        </div>
    </div>
    <input type="hidden" class="form-control selected_days_names" name="days_names" />
</div>

这是 jQuery 代码:

$(document).ready(function() {

    $('.q1_text').text("1. Select your package validity.");
    $('.q2_text').text("2. How many days you need service in a week?");
    $('.q3_text').text("3. Select the days.");

    $('input[name="plan_name_selector"]:first').attr("checked", true);
    check_plan_name_selector();
    check_plan_name();

    $('.plan_name').change(function() {
        check_plan_name();
    });

    $("input[name='plan_name_selector']").click(function() {
        check_plan_name_selector();
    });

    function check_plan_name() {
        var plan_name = $(".selected_plan_name").val();
        if (plan_name === 'Daily') {
            $('.q4_text').text("2. Select your food time");
            $('.days_names').hide();
            $('.select_days').hide();
        } else {
            $('.q4_text').text("4. Select your food time");
            $('.days_names').show();
            $('.select_days').show();
        }
    }

    function check_plan_name_selector() {
        var value = $("input[name='plan_name_selector']:checked").val();
        $('.selected_plan_name').val(value);
        $('.selected_plan_nameVal').html("You have choosed <b>" + value + "</b> validity.");
    }

    $("input[name='day_name_selector']").on('change', function(e) {
        var limit = $("input[name='plan_days_selector']:checked").val();
        if ($("input[name='day_name_selector']:checked").length > limit) {
            $(this).prop('checked', false);
        }
    });

    $(".plan_days").change(function() {
        let days = this.value;
        $("input[name='day_name_selector']").each(function(index) {
            this.checked = index < days;
        }).trigger('change');
    });

    $("input[name='day_name_selector']").change(function() {
        var final = $('input[name="day_name_selector"]:checked').map(function() {
            return $(this).val();
        }).get();
        $('.selected_days_names').val(final.join(", "));
        $('.selected_days_namesVal').html("You have choosed <b>" + final.join(", ") + "<br>");
    });

    $("input[name='plan_days_selector']").click(function() {
        check_plan_days_selector();
    });

    function check_plan_days_selector(){
        var value = $("input[name='plan_days_selector']:checked").val();
        $(".selected_plan_days").val(value);
        $(".selected_plan_daysVal").html("<b>"+value+"</b> days service.");
    }

});

我的网站已上线,您可以从这里查看Foodbox.pk ,我被困住了,请帮助我

最佳答案

我这样做了,效果非常好,就像冠军一样。

function check_plan_name() {
    .......
    if (plan_name === 'Daily') {
        ........
        $('.selected_days_namesVal').empty();
        $('.selected_plan_daysVal').empty();
        $('input[name="plan_days_selector"]').each(function() {
            this.checked = false;
        });
        $('input[name="day_name_selector"]').each(function() {
            this.checked = false;
        });
        $('.selected_plan_days').attr('value', '');
        $('.selected_days_names').attr('value', '');
    }
}

关于javascript - 如果选择每日(复选框),请取消选择所有其他复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58453256/

相关文章:

javascript - 使元素更宽,然后在达到特定点时变窄

javascript - 在 HTML5 中创建拖放编辑平台

html - 当窗口调整大小时,我的导航菜单消失了

javascript - 如何在运行时确定标记在 DOM 元素内是否有效?

javascript - 等待页面准备就绪后再显示

JavaScript 面积计算器

javascript - 尝试使用 jQuery 的 get 方法填充 html 选项列表

jquery - 从现有 jQuery 对象中按 id 获取元素

javascript - 如何为 Canvas 描边颜色使用颜色选择器?

css - 如何在平均堆栈中设置 Caps Lock 警告气球