2014-02-07 2 views
3

У меня есть следующий код. Я хочу проверить, имеет ли каждый пользователь в строке таблицы разрешение со строкой «все» и установить «Разрешить все разрешения» как selectedText соответствующего списка выбора.Как динамически установить jquery multiselect option selectedText в javascript ..?

<%! 
List permission = new ArrayList(); 
Connection connection; 
PreparedStatement ps1,ps2; 
ResultSet rs1,rs2; 
String sql1,sql2; 
// execute rs1 
%> 
<table> 
    <tbody> 
     <% 
     while (rs1.next()) { 
      String user = rs1.getString('username'); 
     %> 
     <tr> 
      <td class="username" width="200"><%=user%></td> 
      <td class="perms" width="200"> 
      <% 
       sql2 = "SELECT perms_name FROM perms WHERE username = ? "; 
       // execute rs2    
       permission.clear(); 
       while (rs2.next()) { 
        permission.add(rs2.getString("permission")); 
       } 
      %> 
      <select class="perms" name="perms" multiple="multiple"> 
       <% for(int i=0;i<permsList_folder.size();i++){%> 
        <option value="<%=permission.get(i)%>" disabled="disabled" selected="selected"><%=permission.get(i).toString().toUpperCase()%></option> 
       <%}%> 
      </select> 
      <td> 
    </tr> 
    </tbody> 
</table> 
<script> 
     var hasAllPerms ="<%=permission.contains('all')%>";// this only handle last row results not for each row/user in table   
     $(".perms").multiselect({ 
      noneSelectedText: "No Permission", 
      selectedText:hasAllPerms=="true"?"ALL Permissions's Allowed":"# Permissions's Allowed" 
     }); 
</script> 
+0

Взгляните на это: http://stackoverflow.com/questions/20917049/set-values-in-jquery-multiselect-dropdown. Мне нужно что-то подобное – Sandeep

+0

попробуйте этот http://ivaynberg.github.io/select2/select2-latest.html –

ответ

2

Существует несколько способов добиться того, что вы пытаетесь сделать.

В этом случае, похоже, вы используете jsp, поэтому вы можете просто установить выбранное значение и отобразить строку на стороне сервера без использования javascript.

<select class="perms" name="perms" multiple="multiple"> 
    <% for(String permissionStr : permission) { 
     String selectedStr=""; 
     String displayValue=permissionStr.toUpperCase(); 
     if("all".equals(permissionStr)) 
     { 
      displayValue="ALL Permissions's Allowed"; 
      selectedStr="selected='selected'"; 
     } 
    %> 
     <option value="<%=permissionStr%>" disabled="disabled" <%=selectedStr%> ><%=displayValue%></option> 
    <%}%> 
</select> 

Если вы хотите установить его с помощью JavaScript/JQuery один способа заключается в добавление идентификатора для каждого окна выбора, таких как

<select class="perms" name="perms" id="perms<%=user%>" multiple="multiple"> 
    <% for(int i=0;i<permsList_folder.size();i++){%> 
     <option value="<%=permission.get(i)%>" disabled="disabled" selected="selected"><%=permission.get(i).toString().toUpperCase()%></option> 
    <%}%> 
</select> 

Затем перебирать каждый пользователь и вместо того, выбрав выбор на основании класса выбор на основании идентификатора

$("#perms" + user).multiselect(...); 

Я бы также не использовал необработанные типы (предварительная совместимость с версией java 1.5) и задал тип в списке разрешений и добавил 's' или 'List' к имени, чтобы более четко указать, что это коллекция, которая содержит несколько разрешений.

<%! 
List<String> permissions = new ArrayList<String>(); 
%> 
+0

спасибо большое, хороший ответ –

Смежные вопросы