简体   繁体   English

如何在javascript中动态设置jquery multiselect选项的selectedText ..?

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

I have following code I want to check whether each user in table row has permission with string 'all' and set "ALL permissions's Allowed" as selectedText of there respective select list. 我有以下代码,我想检查表行中的每个用户是否具有字符串'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>

There are several ways you can achieve what you are trying to do. 有几种方法可以实现您的目标。

In this case it appears you are using a jsp, so you can just set the selected value and display string server side without using any javascript. 在这种情况下,您似乎使用的是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> 

If you want to set it using javascript/jquery one way is to add an id to each select box such as 如果你想使用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> 

Then iterate over each user and instead of selecting the select based on class select based on id 然后迭代每个用户,而不是基于id选择基于类选择的选择

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

I would also not use raw types (pre java 1.5 backwards compatibility) and set the type on your permission list and add an 's' or 'List' to the name to more clearly indicate it is a collection that contains multiple permissions. 我也不会使用原始类型(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