通过jquery检查在具有相同类的下拉框中输入的重复值

checking for a duplcate value entered inside dropdown box with same class through jquery

本文关键字:输入 通过 检查 同类 jquery      更新时间:2023-09-26

有5个下拉菜单具有相同的类"className"。我必须确保在下拉列表中输入的值不重复。

现在,我可以按类访问jquery中的下拉列表,如

$('.className').each(function(){
    //my Ques:: code to check if duplicate values are entered by the user 
    });

我的问题在评论中被称为"我的问题"

您可以使用valfilter检查所选值是否与其他值相同。

过滤器:

将匹配的元素集减少为与选择器或通过函数测试。

代码:

function inputsHaveDuplicateValues() {
    var hasDuplicates = false;
    $('.className').each(function () {
        var inputsWithSameValue = $(this).val();
        hasDuplicates = $('.className').not(this).filter(function () {
            return $(this).val() === inputsWithSameValue;
        }).length > 0;
        if (hasDuplicates) return false
    });
    return hasDuplicates;
}
$('button').click(function () {
    alert(inputsHaveDuplicateValues());
})

演示:http://jsfiddle.net/IrvinDominin/u3czyjt4/

我想有很多方法可以解决这个问题。例如,您可以将每个组合的值存储在一个数组中,在每次迭代中,检查它以前是否已经存储在数组中。

var values = [];
$('.className').each(function(element, index){
    if (values.indexOf($(this).val()) >= 0) {
        //already exists
        return false; //break the loop 
    }
    values[index] = $(this).val();
});

您可以使用哈希表来检查重复条目。检查这个小提琴:

http://jsfiddle.net/v025hkjn/

var hashtable = {};
$(".className").each(function () {
if(hashtable[this.text]) {
    $(this).remove();
} else {
    hashtable[this.text] = this.value;
}
});

对于html可能类似于下面的

<select>
   <option class='className' value="volvo">Volvo</option>
   <option class='className' value="saab">Saab</option>
   <option class='className' value="mercedes">Mercedes</option>
   <option class='className' value="audi">Audi</option>
   <option class='className' value="volvo">Volvo</option>
   <option class='className' value="volvo">Volvo</option>
   <option class='className' value="volvo">Volvo</option>
</select>
   var array = [];  // push all the values in array 
     $('.className').each(function(){       
        // check if the value is in array
        if( $.inArray($(this).val(),array) > 0)
           console.log('duplicate found ', $(this).val());
        else           
          array.push($(this).val()
        // if not insert into array
    });