2013-05-14 57 views
0

我試圖創建一個按鈕,選擇查詢內選中的所有字段。如果有重複項允許用戶選擇自己的字段,則必須檢查重複項並提示消息。任何幫助,將不勝感激。JQuery選擇所有字段,並檢查重複項,用消息回覆

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

}); 

按照評論作品要比較只有第一個選項爲重複 注意改變的線if(nbr.find("option[value^='"+$.get_id_num($(this).val())+"|']").length >1){

value^=表示值以..開頭.. 條件平均值查找選項whi如果長度大於1意味着重複,那麼ch的值從$.get_id_num($(this).val())+"|"開始。 我們需要添加|也爲<option value="1|2|3"><option value="11|2|3">not duplicate<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")); 

}); 
+0

謝謝拉胡爾的重複,我就給你一展身手。 – Sxkaur 2013-05-14 04:38:43

+0

只是更進一步,如果我想選擇一切,但不是重複? (所以如果點擊按鈕,它會選擇所有的值,但重複,並會提示我的消息。) – Sxkaur 2013-05-14 04:45:19

+0

謝謝,這工作出色。但我有var nbr = $(「#id_nbrs」);通過解析它的函數傳遞var nbr = $ .get_id_nbr(「#id_nbrs」);現在它不起作用,因爲它是元素與選項的比較。有沒有解決這個問題? – Sxkaur 2013-05-14 15:51:42