2010-11-26 69 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);