首页 > 解决方案 > 如何比较和验证每个位置的每个选定字符是否不同?

问题描述

如何比较和验证每个位置的每个选定字符是否不同?

每个按钮有 5 种可能性(否、A、B、C、D)。

如何验证 A、B、C、D 是否已被使用。知道“否”可以放置两次或更多次。

在此处输入图像描述

我的代码只工作一次,我认为太复杂了。你有最好的解决方案吗?

         <select id="button01" name="button01">
           <option value="No">No</option>
           <option value="A">A</option>
           <option value="B">B</option>
           <option value="C">C</option>
           <option value="D">D</option>
     </select>
     <select id="button02" name="button02">
           <option value="No">No</option>
           <option value="A">A</option>
           <option value="B">B</option>
           <option value="C">C</option>
           <option value="D">D</option>
     </select>
     <select id="button03" name="button03">
           <option value="No">No</option>
           <option value="A">A</option>
           <option value="B">B</option>
           <option value="C">C</option>
           <option value="D">D</option>
     </select>
     <select id="button04" name="button04">
           <option value="No">No</option>
           <option value="A">A</option>
           <option value="B">B</option>
           <option value="C">C</option>
           <option value="D">D</option>
     </select>
     <select id="button05" name="button05">
           <option value="No">No</option>
           <option value="A">A</option>
           <option value="B">B</option>
           <option value="C">C</option>
           <option value="D">D</option>
     </select>

<script>
$(function() {
    $("FORM#editor").on("change", function(mobile_bt) {
        // data
        var valid = false;
        var button01 = $("#button01", this);
        var button02 = $("#button02", this);
        var button03 = $("#button03", this);
        var button04 = $("#button04", this);
        var button05 = $("#button05", this);
        // compare
        if (button01.val()!= 'No') {
        valid = (button01.val() == button02.val() || button01.val() == button03.val() || button01.val() == button04.val() || button01.val() == button05.val() ? false : true);
        }
        if (button02.val()!= 'No') {

        valid = (button02.val() == button01.val() || button02.val() == button03.val() || button02.val() == button04.val() || button02.val() == button05.val() ? false : true);
        }
        if (button03.val()!= 'No') {
        valid = (button03.val() == button01.val() || button03.val() == button02.val() || button03.val() == button04.val() || button03.val() == button05.val() ? false : true);
        }
        if (button04.val()!= 'No') {
        valid = (button04.val() == button01.val() || button04.val() == button02.val() || button04.val() == button03.val() || button04.val() == button05.val() ? false : true);
        }
        if (button05.val()!= 'No') {
        valid = (button05.val() == button01.val() || button05.val() == button02.val() || button05.val() == button03.val() && button05.val() == button04.val() ? false : true);
        }
        // Alert
        if ( !valid ) {
            // Stop
            mobile_bt.preventDefault();
            // display alert
            alert("Warning! 2 or more buttons are assigned to the same location. Please change your choice.");
            // Focus back
            $("#button01").focus();
        }
    });
});
</script>

标签: jquery

解决方案


这应该工作

$("select[id^='button']").on("change", function(mobile_bt) {
    var fullList = $("select[id^='button']").map(function() { return $(this).val() }).get()
        uniqueList = fullList.filter(function(item, index) {
                        return (item == 'No') ? item : fullList.indexOf(item) >= index;
                     });
    if(fullList.length != uniqueList.length){
        Your code here...
    }       
});

(步骤 1)将所有值映射到一个数组。

(步骤 2)如果值不是“否”,则过滤重复项。

(步骤 3)比较两个数组长度以确定是否存在重复。


推荐阅读