0

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

$.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"));
        }                       
});
4

1 回答 1

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^=表示值以.. 开头。因此, $.get_id_num($(this).val())+"|"如果长度大于 1 表示重复,则条件意味着查找具有以开头的值的选项。我们也需要按原样 |添加<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"));

});
于 2013-05-14T04:27:36.057 回答