簡體   English   中英

如何在javascript中動態設置jquery multiselect選項的selectedText ..?

[英]How to dynamically set jquery multiselect option's selectedText in javascript ..?

我有以下代碼,我想檢查表行中的每個用戶是否具有字符串'all'的權限,並將“ALL permissions's Allowed”設置為相應選擇列表的selectedText。

 <%!
 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>

有幾種方法可以實現您的目標。

在這種情況下,您似乎使用的是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設置它,一種方法是為每個選擇框添加一個id,例如

<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> 

然后迭代每個用戶,而不是基於id選擇基於類選擇的選擇

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

我也不會使用原始類型(pre java 1.5向后兼容性)並在您的權限列表中設置類型,並在名稱中添加“s”或“List”以更清楚地表明它是包含多個權限的集合。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM