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