2010-11-26 65 views
1

我正在開發一個Javascript虛擬鍵盤,我希望它每次出現時都按用戶輸入的文本字段。但是如何知道是否選擇了文本(或任何輸入)字段?Javascript虛擬鍵盤:如何識別文本字段?

--clarification

我必須在將要加載的頁面信息或控制。我只是想,如果一個輸入字段被選中,並且用戶按下回車鍵,我的虛擬鍵盤就會顯示出來。

--update

它使假如我想要做的是一個Firefox擴展有什麼區別? (我認爲它不應該)

+0

jQuery是一個選項嗎? – 2010-11-26 14:56:31

+0

@FrédéricHamidi是的 – 2010-11-29 14:26:35

回答

0

我的解決辦法目前,只是在用戶請求時才使用指定的鍵來打開虛擬鍵盤。

1

將它綁定到onfocus事件。該事件在輸入元素獲得焦點時觸發。如果您想再次隱藏,您可以在onblur事件中再次移除鍵盤。

+0

我沒有組件ID。我希望當頁面上的任何輸入組件集中時,我的虛擬鍵盤就會顯示出來。 – 2010-11-29 14:25:12

0

得到通知,一個文本字段中選擇,您可以附加一個事件處理你感興趣的領域的onfocus。jQuery中(JQ選擇了簡潔

例如,事件工作在純JS ):

$('input[type="text"]').focus(function(event){ 
    // do something here 
}); 

如果你只關心捕捉「ENTER」鍵,你並不需要擔心的焦點,只是附加到文本框的onkeypress事件的事件(見@ poelinca的答案)。

+0

我沒有組件ID。我希望當頁面上的任何輸入組件集中時,我的虛擬鍵盤就會顯示出來。 – 2010-11-29 14:26:11

+0

@湯姆布里託:上面的規則匹配任何文本輸入元素,你不需要知道組件ID。 – Piskvor 2010-11-29 14:47:58

3

使用jQuery並添加以下

  $(document).ready(function() { 
       //apply action to input elements by class 
       //$("#.input_class").keypress(function(e) { 
       //apply action to all input elements (input, textarea, select and button) 
       $(':input').keypress(function(e) { 
        if(e.keyCode==13){ 
         // Enter pressed... do anything here... 
         alert($(this).val()); 
        } else { 
              //make shure you get the desired action for other keys pressed 
         xTriggered++; 
        } 
        //do not submit the form 
        return false; 
       }); 
      }); 
0

儘管apologetes說什麼jQuery的,沒有麻煩到儀器上的所有領域,而不訴諸大而慢的外部庫:

for (var i = 0; i < document.forms.length; i++) 
    for (var j = 0; j < document.forms[i].elements.length; j++) 
    if (document.forms[i].elements[j].tagName.match(/^INPUT$/i)) 
     if (document.forms[i].elements[j].type.match(/^TEXT$/i)) 
     document.forms[i].elements[j].addEventListener('focus', function(){/* your stuff here */}, false);