2009-09-16 72 views
0

我有一系列的按鈕和其他控件。當用戶按下Shift和*時,我想要移動到下一個控件(按鈕,文本或任何其他控件)。我怎樣才能以最短的方式做到這一點。移至下一個按鈕

+1

告訴他們使用TAB鍵嗎? – nickf 2009-09-16 03:10:06

+1

:)是的,我建議,但沒有太多的事情可以對付固執的人與你一起工作.. – Hitz 2009-09-16 03:16:26

回答

0

這是一個俗套的解決方案,但在這裏。

一些解釋,這是什麼試圖做。我想在這裏更正,所以請開火。

  1. 獲取類「nav」的所有元素。這些是我們想要改變焦點的元素。

  2. 從這個集合中,找到以前聚焦的元素及其索引。不幸的是,Internet Explorer和FireFox沒有提供確定哪個元素的焦點的方法或不同。我在這裏用自定義的「isFocused」屬性作弊。

  3. 如果沒有以前的焦點元素,請將該集合中的第一個元素設置爲焦點並將isFocused屬性添加到該元素。

  4. 如果存在以前關注的元素,請從其中移除isFocused屬性並在其後查找下一個「nav」元素。這段代碼支持從集合開始處重新開始,所以如果你使用這種技術將最後一個元素聚焦並按下Shift +「*」,則第一個元素將被聚焦。

這種方法存在問題。它狹隘,忽視用戶手動集中的元素。它還爲HTML元素分配一個點擊處理程序來捕獲所有活動。這可能不是處理這種需求的最高性能方式。

$(document).ready 
(
    function() 
    { 
    $("html").keydown 
    (
     function(e) 
     { 
     if(e.shiftKey && e.keyCode == 42) 
     { 
      var wrappedElemSet = $(".nav"); 
      var focusedElementIndex = -1; 
      var focusedElement; 

      var elems = wrappedElemSet 
       .each 
       (
       function(i) 
       { 
        if($(this).attr("isFocused")) 
        { 
        focusedElementIndex = i; 
        focusedElement = $(this); 
        return false; 
        } 
       } 
       ) 

      if(focusedElementIndex == -1) 
      { 
      $(wrappedElemSet[0]) 
      .attr("isFocused", "isFocused") 
      .focus(); 
      } 
      else 
      { 
      var elementIndexToFocus = 
       focusedElementIndex == wrappedElemSet.size() + 1 ? 
         0 : focusedElementIndex + 1; 

      focusedElement.removeAttr("isFocused");     
      $(wrappedElemSet[elementIndexToFocus]) 
       .attr("isFocused", "isFocused") 
       .focus();     
      }    
     } 
     } 
    ); 
    } 
); 
+0

感謝您的努力 – Hitz 2009-09-16 05:58:00

0
$("#theNextButton").focus(); 

,並儘量做移+是像這樣做的另一個關鍵:

var isShiftDown = false; 
$(document).keyup(function (e) { 
    if(e.which == 16){ 
        isShiftDown = false; 
    } 
}).keydown(function(event){ 

    var code = event.keyCode; 
    if(code == 16){ //left 
            isShiftDown = true; 
    } 

    if(code == 37 && isShiftDown){ //left 
        //instead of traping left key, trap what you need 
    } 

}); 

你將不得不拿出一個辦法把重點放在「下一個」控制自己。它不應該太難。我現在要去玩一些後果。

相關問題