如何检查选择框中的值是否相似| JavaScript

如何检查选择框中的值是否相似| JavaScript,javascript,html,select,box,Javascript,Html,Select,Box,我是JavaScript新手,我有一个问题。我有几个选择框,我必须确保没有类似的框。 我喜欢的代码 <select id="science_1"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <select id="science_2"&g

我是JavaScript新手,我有一个问题。我有几个选择框,我必须确保没有类似的框。 我喜欢的代码

<select id="science_1">
 <option value="0">0</option>
 <option value="1">1</option>
 <option value="2">2</option>
</select>

<select id="science_2">
 <option value="0">0</option>
 <option value="1">1</option>
 <option value="2">2</option>
</select>

<select id="science_3">
 <option value="0">0</option>
 <option value="1">1</option>
 <option value="2">2</option>
</select>

0
1.
2.
0
1.
2.
0
1.
2.
因此,我的JavaScript代码如下所示:

var science_array = [];
var science_count = 0;

$(".science-switch").on("click", "a", function (e) {
    e.preventDefault();

    if (science_count === 3) {

        var select = $(this);
        var type = select.data('type');

        $(".science-switch-type").removeClass("active");
        $(".science-switch a").removeClass("active");

        select.addClass("active");

        $("#type-" + type).addClass("active");
    }
});

$(".u-switch").on("click", "a", function (e) {
    e.preventDefault();
    var select = $(this);
    var type = select.data('type');

    $(".u-switch a").removeClass("active");

    select.addClass("active");

    $(".u-type").removeClass("active");
    $("#type-" + type).addClass("active");
});

$(".btn-switch").on("click", function (e) {
    e.preventDefault();
    var select = $(this);
    var type = select.data('type');

    if (select.hasClass("btn-active")) {
        $(".science-switch-type").removeClass("active");
        $(".science-switch a").removeClass("active");

        $(".science-switch").find("[data-type=priority]").addClass("active");
        $("#type-" + type).addClass("active");
    }
});

$(".science-cb").on("click", ".item", function (e) {
    e.preventDefault();
    var el = $(this);
    var check = el.data('check');
    if (check === 1) {
        if (el.hasClass("active")) {
            el.removeClass("active");

            science_array = jQuery.grep(science_array, function (value) {
                return value !== el.data("id");
            });

        } else {
            science_count = $(".science-cb .item.active").length;
            if (science_count > 2) {
                alert("You can Select Only 3 Box!")
            } else {
                el.addClass("active");
                science_array.push(el.data("id"));
            }
        }

        science_count = $(".science-cb .item.active").length;

        if (science_count === 3) {
            $(".btn-switch").addClass("btn-active");
            $(".btn-switch").removeClass("btn-disabled");
            $(".btn-switch").trigger("click");
        } else {
            $(".btn-switch").addClass("btn-disabled");
            $(".btn-switch").removeClass("btn-active");
        }
        all_sciences();
    }
});


function all_sciences() {
    var selectValues = [];
    selectValues.length = 0;
    console.log("............");

    $.each(science_array, function (key, value) {
        selectValues.push({text: sciences[value][0], value: value})
    });

    $('.all-sciences').empty();

    $.each(selectValues, function (key, value) {
        $('.all-sciences')
            .append($("<option></option>")
                .attr("value", value['value'])
                .text(value['text']));
    });

    $("#science_1").val(science_array[0]);
    $("#science_2").val(science_array[1]);
    $("#science_3").val(science_array[2]);
}});
var-science_-array=[];
var science_count=0;
$(“.science开关”)。打开(“单击”,“a”,函数(e){
e、 预防默认值();
如果(科学计数===3){
var select=$(此值);
var type=select.data('type');
$(“.science开关类型”).removeClass(“活动”);
$(“.science开关a”).removeClass(“活动”);
select.addClass(“活动”);
$(“#type-”+type).addClass(“活动”);
}
});
$(“.u-switch”)。打开(“单击”,“a”,函数(e){
e、 预防默认值();
var select=$(此值);
var type=select.data('type');
$(“.u开关a”).removeClass(“活动”);
select.addClass(“活动”);
$(“.u-type”).removeClass(“活动”);
$(“#type-”+type).addClass(“活动”);
});
$(“.btn开关”)。打开(“单击”,功能(e){
e、 预防默认值();
var select=$(此值);
var type=select.data('type');
如果(选择.hasClass(“btn活动”)){
$(“.science开关类型”).removeClass(“活动”);
$(“.science开关a”).removeClass(“活动”);
$(“.science开关”).find(“[data type=priority]”)。addClass(“active”);
$(“#type-”+type).addClass(“活动”);
}
});
$(“.science cb”)。在功能(e)上单击“.item”{
e、 预防默认值();
var el=$(本);
var检查=el.数据(“检查”);
如果(检查===1){
如果(el.hasClass(“活动”)){
el.removeClass(“主动”);
科学数组=jQuery.grep(科学数组,函数(值){
返回值!==标高数据(“id”);
});
}否则{
科学计数=$(“.science cb.item.active”)。长度;
如果(科学计数>2){
警报(“您只能选择3个框!”)
}否则{
el.addClass(“主动”);
科学阵列推送(el.data(“id”));
}
}
科学计数=$(“.science cb.item.active”)。长度;
如果(科学计数===3){
$(“.btn开关”).addClass(“btn活动”);
$(“.btn开关”).removeClass(“btn禁用”);
$(“.btn开关”)。触发器(“单击”);
}否则{
$(“.btn开关”).addClass(“btn禁用”);
$(“.btn开关”).removeClass(“btn活动”);
}
全科;
}
});
函数所有_科学(){
var selectValues=[];
选择values.length=0;
控制台日志(“………”);
$.each(科学数组、函数(键、值){
selectValues.push({text:sciences[value][0],value:value})
});
$('.all sciences').empty();
$.each(选择值、函数(键、值){
$(“.所有科学”)
.append($(“”)
.attr(“值”,值['value'])
.text(值['text']);
});
$(“#science_1”).val(science_数组[0]);
$(“#science_2”).val(science_数组[1]);
$(“#science_3”).val(science_数组[2]);
}});
因此,我希望用户选择3个数字,但数字必须等于1,2,3,2,1,3或3,2,1,但不能是2,2,1与1,1,3或1,1,1等。我该如何做


谢谢

我无法理解你剧本的某些部分。我稍微修改了你的html。我在每个选择框中插入了一个没有值的选项。完成所有选择后,我检查了重复的选择。如果没有重复,那么我用最终的选择填充一个选择框,否则让它为空。希望这有帮助

       <h3>Science</h3>
       <select id="science_1" class="science" onchange="all_sciences();">
        <option value="">Please select</option>
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2">2</option>
       </select>

       <select id="science_2" class="science"  onchange="all_sciences();">
        <option value="">Please select</option>
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2">2</option>
       </select>

       <select id="science_3" class="science"  onchange="all_sciences();">
        <option value="">Please select</option>
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2">2</option>
       </select>
       <h5>Final selection</h5>
       <select id="all-sciences" class="all-sciences"></select>

    <script>

    function all_sciences() {
        var selectValues = [];
        selectValues.length = 0;
        console.log("............");

        var allSelected = 0;

        var science_array = {};
        var allVals = [];

        $( ".science" ).each(function() {
             var thisId = $(this).attr('id');
             var thisVal = $(this).val();
             //console.log(thisId + "  " + thisVal);
             science_array[thisId] = thisVal;
             allVals.push(thisVal);
        });


        $.each(science_array, function (key, value) {
            if(value!=""){
                allSelected++;    
            }
            console.log(key + "  " + value);
        });

        if(allSelected == 3){
            var distinct = chkDuplicates(allVals,true);
            console.log(distinct);

            if(distinct) {
                alert("Please select courses so that there are no duplicate selections.");
                $('.all-sciences').empty();
            }
            else {
                $('.all-sciences').empty();
                $.each(science_array, function (key, value) {
                    $('#all-sciences').append('<option value="' + value + '">' + key + ' - course ' + value +'</option>');
                });                
            }                

        }

    }


    function chkDuplicates(arr,justCheck){
      var len = arr.length, tmp = {}, arrtmp = arr.slice(), dupes = [];
      arrtmp.sort();
      while(len--){
       var val = arrtmp[len];
       if (/nul|nan|infini/i.test(String(val))){
         val = String(val);
        }
        if (tmp[JSON.stringify(val)]){
           if (justCheck) {return true;}
           dupes.push(val);
        }
        tmp[JSON.stringify(val)] = true;
      }
      return justCheck ? false : dupes.length ? dupes : null;
    }        

    </script>
科学
请选择
0
1.
2.
请选择
0
1.
2.
请选择
0
1.
2.
最终选择
函数所有_科学(){
var selectValues=[];
选择values.length=0;
控制台日志(“………”);
var-allSelected=0;
var-science_数组={};
var-allVals=[];
$(“.science”)。每个(函数(){
var thisId=$(this.attr('id');
var thisVal=$(this.val();
//console.log(thisId+“”+thisVal);
科学_数组[thisId]=thisVal;
所有值推送(本值);
});
$.each(科学数组、函数(键、值){
如果(值!=“”){
所有选定的++;
}
console.log(键+“”+值);
});
如果(全部选定==3){
var distinct=chkDuplicates(ALLVAL,true);
console.log(独立);
如果(不同){
提醒(“请选择课程,以免重复选择”);
$('.all sciences').empty();
}
否则{
$('.all sciences').empty();
$.each(科学数组、函数(键、值){
$(“#所有科学”)。附加(“+key+”-课程“+value+”);
});                
}                
}
}
功能CHKD副本(arr、justCheck){
var len=arr.length,tmp={},arrtmp=arr.slice(),dupes=[];
arrtmp.sort();
而(len--){
var val=arrtmp[len];
if(/nul | nan | infini/i.test(String(val))){
val=字符串(val);
}
if(tmp[JSON.stringify(val)]){
if(justCheck){return true;}
重复推送(val);
}
tmp[JSON.stringify(val)]=true;
}
return justCheck?false:重复。length?重复:null;
}        

simple when user select of any select(用户从任一选择中选择一个选项时)此时禁用剩余两个选择的该选项亲爱的谢谢,但在每个选择阶段,如果用户从第一个选择中选择1而不是其他选择阶段(1,2,3)值,则该选项的值为(1,2,3)。如果