2009-12-10 123 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

相關問題