Javascript 防止收音机选择与时间选择重叠

Javascript 防止收音机选择与时间选择重叠,javascript,jquery,html,Javascript,Jquery,Html,我有一个带有事件选择的表单,这些是带有保存日期和时间值的单选选项,如下所示: 10月31日星期四下午1:00-3:15 问题是有多个事件在时间上重叠,不允许填写表单的用户选择重叠时间。我需要完成的是当时间重叠时,给所有相互冲突的选项一个红色背景。我一直在尝试jQuery,但无法找到解决方案。到目前为止,我有: 所有收音机选项都有.time类 $(document).ready(function() { var map = {}; $(".time").change(functio

我有一个带有事件选择的表单,这些是带有保存日期和时间值的单选选项,如下所示:

10月31日星期四下午1:00-3:15

问题是有多个事件在时间上重叠,不允许填写表单的用户选择重叠时间。我需要完成的是当时间重叠时,给所有相互冲突的选项一个红色背景。我一直在尝试jQuery,但无法找到解决方案。到目前为止,我有:

所有收音机选项都有.time类

$(document).ready(function() {
    var map = {};
    $(".time").change(function() {
        var value = $(this).val();
        map[$(this).attr('name')] = value;
        $(".time").each(function() {
            if ($(this).is(':checked')) {
                time = $(this).val();
                tr = $(this).closest('tr');
                $.each(map, function(key, val) {
                    if (val == time) {
                        tr.addClass('red');
                    } else {
                        tr.removeClass('red');
                    }
                });
            }
        });
    });
});

上面所说的并没有按照我希望的方式工作,事实上它根本没有按照预期的方式工作。如果有人能给我点启示,我会非常感激。

我相信这就是你想要的

<script type="text/javascript">
    $(".time").change(function() {
        var values = $("input.time").map(function(){
            return $(this).val();
        });
        values.each( function (){
            var overlapping = $("input.time[value='"+ this +"']");
            if (overlapping.filter(":checked").length > 1){                            
                overlapping.parents("tr").addClass("red");}
            else{
                overlapping.parents("tr").removeClass("red");
            }
        })
    });
</script>

$(“.time”).change(函数(){
var值=$(“input.time”).map(函数(){
返回$(this.val();
});
值。每个(函数(){
变量重叠=$(“input.time[value='”+this+']);
如果(重叠的.filter(“:checked”).length>1{
重叠的.parents(“tr”).addClass(“red”);}
否则{
重叠。家长(“tr”)。removeClass(“红色”);
}
})
});
它首先映射所有单选按钮值,然后根据每个值的选中计数添加/删除相应的红色类


是的,小提琴在这里:正是我需要的,非常感谢你的努力!