【问题标题】:Select A-Z from a list从列表中选择 A-Z
【发布时间】:2012-11-07 15:55:57
【问题描述】:

我有一个项目列表,希望用户可以选择跳转到他们想要的字母。

例如,屏幕顶部的字母 A-Z,当用户点击 B 时,会将它们带到列表中第一项以 B 开头的部分。

有什么方法可以使用 ColdFusion 做到这一点吗?

我的列表是使用查询填充的。

<table border="1"> 
  <tr> 
    <th>Names</th> 
    <th>Other Stuff</th> 
  </tr> 

<cfoutput query="getnames"> 
  <tr> 
    <td> 
      <li>#getnames.names#</li> 
    </td> 
    <td> 
    <li>#getnames.otherstuff#</li> 
    </td> 
  </tr> 
</cfoutput>
</table>

【问题讨论】:

    标签: list coldfusion coldfusion-8 alphabetical


    【解决方案1】:

    您可以使用命名锚点跳转到页面中的某个位置。假设您正在跳转到一个人的姓氏。

    <cfset letters = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z">
    <cfoutput>
        <cfloop list="#letters#" index="i">
            <a href="###i#">#i#</a>&nbsp;
        </cfloop>
    </cfoutput>
    
    <cfset currentLetter = left(yourQuery.lastName,1)>
    <cfoutput query = "yourQuery">
        <cfif currentLetter neq left(yourQuery.lastName,1)>
            <cfset currentLetter = left(yourQuery.lastName,1)>
            <a name = "#currentLetter#" />
        </cfif>
        #yourQuery.lastName#<br />
    </cfoutput>
    

    【讨论】:

    • 从 A 到 Z 循环的更简单方法是执行 ,因此您不必全部输入。使用 CHR(Letter) 返回字母。
    • 是的,这绝对是一个选择。
    • 你也可以只说 from = "65" to = "90" 看到 ascii A-Z 是静态的,不需要每次都评估值。
    • “评估”将是一次且不明显。至少在我看来,您在可读性方面获得的收益非常值得“性能”打击。
    【解决方案2】:

    使用锚点。在您的列表中,为第一个带有起始字母的项目指定一个 ID,如下所示:

    <li id="letter-a">Apple</li>
    

    然后在您的字母列表中链接到它:

    <a href="#letter-a">A</a>
    

    (如果每个字母都有标题,请将 ID 提供给它们。)

    【讨论】:

    • 谢谢,很好的答案。我忘了提到我的列表是使用查询填充的,因此我无法将链接添加到以某个字母开头的列表项。编辑了我的问题。
    • @Alias:那么,您将需要修改您的查询。可以发一下代码吗?
    • 别名,邮编在the question,可以正确格式化。 (另外,您只需将 id 添加到每个字母的第一个 tr/td 即可。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2016-03-04
    • 2016-03-04
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    相关资源
    最近更新 更多