1

セレクトコンボ「#accountSelector」でCODE!=「abc012345」のアイテムを青にしたい。

次の解決策を試してみましたが、正しく動作しますが、コードの複製があります (" option " タグの内容が IF ELSE ステートメントに複製されます)。

コードの複製を避けるために、オプション タグの色を変更するにはどうすればよいですか? javascript/jquery クリーナー ソリューションはありますか?

<table border="0" cellPadding="0" cellSpacing="0" >
    <logic:notEmpty name="enabledReportsList" >
        <tr>
            <td>
            <select id="accountSelector" name="accountSelector" style="WIDTH: 380px" class="comboFilter" onChange="preSubmit();document.changeReports.submit()">                
                    <logic:iterate id="cc" indexId="ccn" name="enabledReportsList" >        
                     <% if (!( ((it.myproject.common.Report)cc).getCode() ).equals("abc012345")){%>             
                        <option style="color:blue" value="<bean:write name="cc" property="Report"/>" <%= ( ((it.myproject.common.Report)cc).getReport() ).equals(session.getAttribute("accountSelector")) ? "selected" : "" %> >
                            <bean:write name="cc" property="fullValue"/>
                        </option>
                      <%} else {%>
                      <option value="<bean:write name="cc" property="Report"/>" <%= ( ((it.myproject.common.Report)cc).getReport() ).equals(session.getAttribute("accountSelector")) ? "selected" : "" %>>
                            <bean:write name="cc" property="fullValue"/>
                        </option>
                       <%}%>
                    </logic:iterate>
            </select>                   
            </td> 
            <td class="filterheader">
                <b><bean:message key="selector.account" arg0="${fn:length(enabledReportsList)}"/></b>
            </td>
        </tr>
    </logic:notEmpty>

    <logic:empty name="enabledReportsList" >
       <tr>
          <td class="filterheader">
           <bean:message key="ENABLED_REPORTS.combo.empty"/>
          </td>
       </tr>
    </logic:empty>

</table>

4

3 に答える 3

2

それはとても簡単です:

  1. 出力なしで Java コード ブロック内のスタイルの値を計算します。

     <% 
     String style = "";
     if( ... ) {
         style = "style='color:blue' ";
     }
     %>
    
  2. 次の変数を使用します。

    <option <%=style%>value="...
    

変数の内容を適切にエスケープする責任があることに注意してください。JSP コンパイラによって生成された Java コードでは、次のようになります。

 out.write("<option ");
 out.write(style);

つまり、文字列はそのままクライアントに渡されます。

于 2013-11-13T13:28:19.777 に答える
1

ELを使用してみてください:

<option ${cc.report eq 'abc012345'? 'style="color:blue"' : ''} value="<bean:write name="cc" property="Report"/>" <%= ( ((it.myproject.common.Report)cc).getReport() ).equals(session.getAttribute("accountSelector")) ? "selected" : "" %> >
于 2013-11-13T13:31:20.157 に答える
0

このようなものがうまくいくかもしれません:

<select ...>
<%
    var optionClass = "option-white"

    loop(...)
        if(samething.equals("abc012345"))
            optionClass = "option-blue"
%>
    <option class="<%:optionClass%>" value="1">Test</option>
<%end loop%>
</select>

また、単純な JQuery コードを使用して、現在選択されているオプションの色を維持できます

于 2013-11-13T13:42:01.693 に答える