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