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 に答える