要在下拉框里显示几类不同的值,类与类之间用下划线(----------)隔开,如何实现其他项可以选择,而下划线(----------)只能显示不能选择,最好光标都不能停留在下划线(----------)上面。
下拉框显示如下:线性数学
离散数学
图论
曲面几何
-------------
英语
法语
德语
日语
--------------
理论化学
材料化学
我想得到 当光标目前在“曲面几何”这一拦时,再移动光标向下,则会跳到“英语”这一栏上,而不是 下划线(----------)上面!

解决方案 »

  1.   

    lz你说的这种只能靠div+css来实现了<select multiple="multiple"></select> 有一个这个属性,但是满足不了你还要拉线的需求。
      

  2.   

    <html:option>里面没有这样的属性吗,或者有没有JS的方法,当光标移动到下划线上时自动跳动下一个
      

  3.   

    <select .....>
        <option value="xxx">线性数学</option>
         ....
        <optgroup label="-------------"><!-- 或者更合理点,用“语言” -->
            <option value="...">英语</option>
            <option value="...">法语语</option>
            ...
        </optgroup>
        ...
    </select>
      

  4.   

    对的,<optgroup> 标签定义选项组,此元素允许您组合选项。
      

  5.   


    <SELECT>
    <OPTGROUP LABEL="碱性金属">
    <OPTION>锂 (Li)</OPTION>
    <OPTION>纳 (Na)</OPTION>
    <OPTION>钾 (K)</OPTION>
    </OPTGROUP>
    <OPTGROUP LABEL="卤素">
    <OPTION>氟 (F)</OPTION>
    <OPTION>氯 (Cl)</OPTION>
    <OPTION>溴 (Br)</OPTION>
    </OPTGROUP>
    </SELECT>
      

  6.   

    呵呵,还是有高手啊
    但是还有两个问题:
    1、在STRUTS中有没有类似<optgroup label的标签呢?
    2、我的下拉框中的值是从数据库中取到的数据集,即是先取到
    线性数学
    离散数学
    图论
    曲面几何放入一个LIST中,再取
    英语
    法语
    德语
    日语
    ,再放到原来那个LIST中,以此类推,最后用request把这个LIST对象带到页面上的
    原来语句如下
    <html:select property="Code">
         <html:options collection="List" property="Code" labelProperty="Name"></html:options> 
    </html:select>
    怎么修改最简洁呢?
      

  7.   

    你把值存到map里吗,然后用这个
    <c:forEach items="${map}" var="m">
     <optgroup label="${m.key}"><!--label也可以用“----------” -->
     <c:forEach items="${m.value}" var="v">
         ${v }
     </c:forEach>
    </optgroup>
    </c:forEach>
      

  8.   

    我忘了吧select和option加上了 你自己加下吧 这种方法应该可以
      

  9.   

    谢谢了
    我是把所有数据都放在一个list中,包括下划线,它的value是"",但是可能要做判断,比如取到的值为“”,就使用<optgroup label标签,但我对JNSL不了解啊
      

  10.   


    你这样子做比较麻烦,还不如在服务器端就把之封装好,map的key值随便设就好,然后就像我上面写的那样做就行,页面不要有太多的逻辑判断
    <select .....>
    <c:forEach items="${map}" var="m">
     <optgroup label="-------------">
     <c:forEach items="${m.value}" var="v">
         <option value="${v.id}">${v.name}</..>
     </c:forEach>
    </optgroup>
    </c:forEach>
    </select>
      

  11.   

    你是说,都放到了一个list里面,正常位置是英语什么的,如果放的value是""就是-----------------<html:select ...>
      <c:forEach items="${list}" var="m">
        <logic:empty name="m" property="value">
          <optGroup label="----------" />
        </logic:empty>
        <logic:notEmpty name="m" property="value">
          <html:option ....
      

  12.   

    也就是不一定要
    <optGroup>
      <option value="1">x</option>
      <option value="2">x</option>
      <option value="3">xxx</option>
    </optGroup>
    也可以
    <option value="1">x</option>
    <option value="2">x</option>
    <option value="3">xxx</option>
    <optGroup />
      

  13.   

    能这样用吗? 我这样写了
    <html:select property="code">
    <c:forEach items="${tmpList}" var="m">
     <logic:empty name="m" property="code">
       <optGroup label="----------" />
       </logic:empty>
     <logic:notEmpty name="m" property="code">
       <html:option value="m.code">
       <c:out value="m.name"/>
       </html:option>
     </logic:notEmpty>
    </c:forEach>
    </html:select>
    页面居然出不来了?也没报什么错?
    其中,tmpList是个List集合,里面存放了多个对象,该对象有code和name两个属性,我把要插入显示的下划线也加入了tmpList中,只是它对应的对象的code是空
    上面语法有什么问题吗
      

  14.   

    <html:option value="${m.code}">${m.name}</html:option>