2009-12-10 119 views
2

我有一页充满了单选按钮,我希望能够通过选项卡,然后根据键盘输入选择选项。我希望能够以类似的方式使用键盘输入来处理单选按钮,其方式类似于它在下拉菜单中的工作方式(输入字母'G'将自动选择以'G'开头的第一个选项)基于键盘输入选择单选按钮选项

Is there一个jquery插件可以帮助我解决这个问题,或者我必须从零开始组合功能。不幸的是,根据客户的要求,选项需要保持单选按钮(而不是下拉)格式,而内置的选项卡/箭头键/空格键功能还不够。

感谢

+0

似乎无法找到预构建的任何东西,如果我有机会构建一个值得发布的插件,我会在此处发布链接。 – Mercurybullet 2009-12-11 22:35:44

回答

3

这里是您可以使用代码的一些例子。根据需要添加您自己的Case部件,将您的选择器放入以匹配您的结构。

一个已通过当前选择,另一个没有。 根据需要使用,并根据您的需要进行特定设置。

/* handle special key press */ 
    function checkKey(e) 
    { 
     var shouldBubble = true; 
     switch (e.keyCode) 
     { 
      // user pressed the Tab           
      case 9: 
       { 
        $(".pickMyClass").toggleClass("pickSelectVisible"); 
        $("#someOtherClass").toggleClass('pickHighlight'); 
        shouldBubble = false; 
        break; 
       }; 
       // user pressed the Enter  
      case 13: 
       { 
        $(".pickMyClass").toggleClass("pickSelectVisible"); 
        $('.pickEntryArea').trigger('change'); /* we made changes so trigger it */ 
        $("#someOtherClass").toggleClass('pickHighlight'); 
        break; 
       }; 
       // user pressed the ESC 
      case 27: 
       { 
        $(".pickMyClass").toggleClass("pickSelectVisible"); 
        $("#someOtherClass").toggleClass('pickHighlight'); 
        break; 
       }; 
     }; 
     /* this propogates the jQuery event if true */ 
     return shouldBubble; 
    }; 
    /* handle special key press */ 
    function checkFieldKey(e, me) 
    { 
     var shouldBubble = true; 
     switch (e.keyCode) 
     { 

      // user pressed the Enter   
      case 13: 
       { 
        $(me).blur(); 
        $("#someSpecialSelect").focus(); 
        shouldBubble = false; 
        break; 
       }; 
     }; 
     /* this propogates the jQuery event if true */ 
     return shouldBubble; 
    }; 
    /* user pressed special keys while in Select */ 
    $(".someSelect").keydown(function(e) 
    { 
     return checkKey(e); 
    }); 
    /* user pressed special keys while in Select */ 
    $(".somethingOther").keydown(function(e) 
    { 
     return checkFieldKey(e, $(this)); 
    }); 
+0

这个框架看起来不错,如果我需要从头开始构建某些东西,我可能会最终使用它,但不幸的是,我正在寻找一些能够自动检查文本并检查键的东西,而不必定义每个键的行为方式。基本上寻找的东西,我可以放在多个地方,而无需更改任何代码,它将允许单选按钮对键盘输入作出反应,以下拉相同的方式。 – Mercurybullet 2009-12-10 20:53:12

+1

你可以放置一个角色的案例,然后有一个通用的过程来管理对关键条目的反应 - 并从中创建一个简单的插件......只是一个想法。这不应该那么困难。我没有找到一个“无线电字符”类型的插件。 – 2009-12-11 13:33:17

+1

真的,它听起来像你想要像自动完成插件一样处理关键笔划,但它使它对单选按钮中的文本起作用 - 所以应该可以从Autocomplete中提取关键笔划处理并从那里创建一个新的插件,或者使用我给出的基准起点。 – 2009-12-11 13:37:26

2

使用HTML而不是jQuery的,浏览器有一个内置的机制来选择键盘输入+使用“快捷键”属性的组合键的形式选择。我很确定如果需要,jQuery可以与此方法进行交互。

<p>To select with a keyboard, click "alt+a" or "alt+b"*</p> 
<form name="myForm" method="post"> 
    <input type="radio" accesskey="a" value="a" name="myRadio" /> Value A 
    <input type="radio" accesskey="b" value="b" name="myRadio" /> Value B 
    <input type="submit" name="submit" value="submit" /> 
</form> 

*有关详情,请解释:http://www.webaim.org/techniques/keyboard/accesskey.php

+0

我可以看到这方面的潜力,但我正在寻找更多的东西来看看文本并自动处理访问密钥。我之前没有提到的另一个下拉功能是,点击'G'两次将转到以'G'开头的第二个响应。对我来说另一个贴纸是它看起来像不同的浏览器使用不同的击键组合。 – Mercurybullet 2009-12-10 20:50:46

+0

你打算假设单选按钮文本的第一个字母吗?如果有重复,该怎么办? – 2009-12-10 23:39:57

+0

是的,要承担单选按钮文本的第一个字母。就像我说的那样,如果可能的话,我希望有一些能够复制下拉菜单样式的东西,但是不足以从头开始创建它。最低要求是循环所有以按下字母开头的选项。如果可能的话,支持前几个字母的快速爆发是非常好的。 – Mercurybullet 2009-12-10 23:45:16

相关问题