JQuery选择所有字段并检查重复项,并使用消息进行响应

时间:2013-05-14 04:16:26

标签: jquery select click duplicates

我正在尝试创建一个按钮,选择select中查询的所有字段。如果有重复项允许用户选择自己的字段,则必须检查重复项并提示消息。任何帮助将不胜感激。

$.get_id_num = function(num){
    var num_str = num.toString();
    var elements = num_str.split('|');
    return elements[0];
}


$.select_all_nbrs = function() {
    $("select[multiple] option").attr('selected', 'selected');
}


 $( '#id_selectall_btn').click( function() {
        var nbr = $.get_id_nbr("#id_nbrs");
            if($("#id_nbrs option[value='nbr']").length == 0){
                show_messages("Duplicate!");
            }else{
                ($.select_all_nbrs("#id_nbrs"));
        }                       
});

1 个答案:

答案 0 :(得分:0)

$.select_all_nbrs = function(id) {
    $("#"+id+" > option").attr('selected', 'selected');
}


 $( '#id_selectall_btn').click( function() {
        var nbr = $("#id_nbrs");
        var duplicate=false;
        nbr.find("option").each(function(){
            if(nbr.find("option[value='"+$(this).val()+"']").length >1){
                duplicate=true;
                show_messages("Duplicate! value "+$(this).val());
            }  
        });
        if(!duplicate){
            ($.select_all_nbrs("#id_nbrs"));
        }

});

根据评论,如果你想选择所有但重复的消息,请尝试以下代码

$.select_all_nbrs = function(id) {
    var nbr = $("#id_nbrs"); 
    var duplicate=false;
    nbr.find("option").each(function(){
        if(nbr.find("option[value='"+$(this).val()+"']").length >1){
            duplicate=true;
            show_messages("Duplicate! value "+$(this).val());
        }else{
            $(this).attr('selected', 'selected');
        }  
    });

}


 $( '#id_selectall_btn').click( function() {

        ($.select_all_nbrs("#id_nbrs"));

});

根据评论Op想要仅比较第一个重复选项 请注意更改的行if(nbr.find("option[value^='"+$.get_id_num($(this).val())+"|']").length >1){

value^=表示值以...开头 因此,如果长度大于1表示重复,则条件意味着查找具有以$.get_id_num($(this).val())+"|"开头的值的选项。 我们还需要添加| <option value="1|2|3"> not duplicate <option value="11|2|3"><option value="1|5|8">重复

$.select_all_nbrs = function(id) {
    var nbr = $("#id_nbrs"); 
    var duplicate=false;
    nbr.find("option").each(function(){
        if(nbr.find("option[value^='"+$.get_id_num($(this).val())+"|']").length >1){
            duplicate=true;
            show_messages("Duplicate! value "+$(this).val());
        }else{
            $(this).attr('selected', 'selected');
        }  
    });

}

$.get_id_num = function(num){
    var num_str = num.toString();
    var elements = num_str.split('|');
    return elements[0];
 }
 $( '#id_selectall_btn').click( function() {

        ($.select_all_nbrs("#id_nbrs"));

});