Javascript ul标签中的键盘快捷键

Javascript ul标签中的键盘快捷键,javascript,html,Javascript,Html,我用PHP创建了一个: $WORLD_STATES = array( "France", "Germany", "Greece", "Greenland", "United Kingdom", "United States", "Uruguay" ); echo '<ul>'; for($i=0; $i<sizeof($WORLD_STATE

我用PHP创建了一个

$WORLD_STATES =
     array(
        "France",
        "Germany", 
        "Greece",
        "Greenland",
        "United Kingdom",
        "United States", 
        "Uruguay"
     );

echo '<ul>';
for($i=0; $i<sizeof($WORLD_STATES); $i++){
    echo '<li rel="' . $WORLD_STATES[$i] . '">'.$WORLD_STATES[$i].'</li>';
}

echo '</ul>';
$WORLD\u STATES=
排列(
“法国”,
“德国”,
“希腊”,
“格陵兰”,
“联合王国”,
“美国”,
“乌拉圭”
);
回声“
    ”;
    对于($i=0;$i是的,您需要客户端脚本

    您可以将属性添加到
    a
    节点,并将
    href
    属性指向无序列表


    用户仍然需要修改器,但这是标准的方法。

    是的,您需要客户端脚本

    您可以将属性添加到
    a
    节点,并将
    href
    属性指向无序列表

    尽管用户仍然需要修改器,但这是标准的方法。

    为什么不使用
    元素呢

    例如:

    <select name="country" id="country">
       <option>United States</option>
       <option>United Kingdom</option>
    </select>
    
    
    美国
    大不列颠联合王国
    
    元素具有内置的字母数字跳转功能。您可以有一个包含所有国家/地区的下拉列表,而不是一个提交按钮

    如果您正在使用列表跳转到新页面,那么您可以读取
    $\u POST['country']
    的值,并重定向到它所适用的页面

    如果您只是使用它跳转到页面上的其他位置,则在提交表单时运行一些javascript,读取select的值,然后跳转到页面上的该位置。

    为什么不使用
    元素呢

    例如:

    <select name="country" id="country">
       <option>United States</option>
       <option>United Kingdom</option>
    </select>
    
    
    美国
    大不列颠联合王国
    
    元素具有内置的字母数字跳转功能。您可以有一个包含所有国家/地区的下拉列表,而不是一个提交按钮

    如果您正在使用列表跳转到新页面,那么您可以读取
    $\u POST['country']
    的值,并重定向到它所适用的页面

    如果您只是使用它跳转到页面上的其他位置,则在提交表单时运行一些javascript,读取select的值,然后跳转到页面上的该位置。

    使用jQuery执行此操作(建议使用jQuery作为一种简单/可靠的方式来消除跨浏览器不一致),我建议在列表的开头添加一个搜索框,提供以下内容:

    html: .

    要使用jQuery实现这一点(jQuery被认为是消除跨浏览器不一致的一种简单/可靠的方法),我建议在列表开头添加一个搜索框,给出以下内容:

    html:
    .

    这可以在不使用jQuery更改当前布局的情况下完成。下面是一个粗略的示例:

    $(document).keypress(function (event) {
        var key = String.fromCharCode(event.which);
        $("#Container li").each(function (index) {
            var text = $(this).text();
            if (text.length > 0 && text.charAt(0).toLowerCase() == key.toLowerCase())
            {
                $("#Container").scrollTop($(this).position().top);
                break;
            }           
        });
    });
    

    这应该将DIV滚动到打印字母的位置。

    这可以在不使用jQuery更改当前布局的情况下完成。下面是一个粗略的示例:

    $(document).keypress(function (event) {
        var key = String.fromCharCode(event.which);
        $("#Container li").each(function (index) {
            var text = $(this).text();
            if (text.length > 0 && text.charAt(0).toLowerCase() == key.toLowerCase())
            {
                $("#Container").scrollTop($(this).position().top);
                break;
            }           
        });
    });
    


    这应该将DIV滚动到打印字母的位置。

    您需要使用客户端脚本来实现这一点,JavaScript、jQuery、Prototype、Glow、MooTools……是否可以接受?(如果可以,是哪一个?)PHP与您的问题无关。请在此处发布HTML代码(简称为几项)然后询问解决方案。@David但我如何使用javascript完成此操作?@col.Sharpnel谢谢您的编辑,:-)您不使用select元素(下拉列表)有什么原因吗,哪些浏览器本机支持键盘快捷键?您需要使用客户端脚本来实现这一点,JavaScript、jQuery、Prototype、Glow、MooTools……是否可以接受?(如果可以,哪一个?)PHP与您的问题无关。改为在此处发布HTML代码(缩短为几项)然后询问解决方案。@David但我如何使用javascript来实现这一点?@col.Sharpnel感谢您的编辑,:-)您不使用选择元素(下拉菜单)是有原因的吗?浏览器本机支持键盘快捷键?好问题,我已经构建了一个类似选择的组件(我个人的喜好)我使用了一个div+ul+输入文本+一个按钮(你可以在照片中看到)@Simo:你意识到你可以用CSS设计
    ,对吗?例如,我快速制作了一个概念证明。如果你稍微玩转一下,你可能会使你的列表看起来和你用
    元素制作的一样好。@agentUntrum是的,但我在图像中显示的那一个,当你点击文本输入(只读)时,列表将以fadeIn方式显示(就像一个样式化的弹出窗口)不像选择元素。@Simo:为什么不能以同样的方式淡入
    元素?@Simo:我完全支持重新发明轮子,这是一种很好的学习体验,但是如果你重新发明轮子,结果发现它比普通轮子更差,那么可以扔掉它。好问题,我已经构建了一个类似选择的组件(我个人的喜好)我使用了一个div+ul+输入文本+一个按钮(你可以在照片中看到)@Simo:你意识到你可以用CSS设计
    ,对吗?例如,我快速制作了一个概念证明。如果你稍微玩转一下,你可能会使你的列表看起来和你用
    元素制作的一样好。@agentUntrum是的,但我在图像中显示的那一个,当你点击文本输入(只读)时,列表将以fadeIn方式显示(就像一个样式化的弹出窗口)不像选择元素。@Simo:你为什么不能以同样的方式淡入
    元素?@Simo:我完全赞成重新发明轮子,这是一种很好的学习体验,但如果你重新发明了轮子,结果发现它比普通的轮子更糟糕,那就扔掉它吧。