我正在尝试创建一个按钮,选择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"));
}
});
答案 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"));
});