Javascript虚拟键盘:如何识别文本字段?

时间:2010-11-26 14:53:30

标签: javascript

我正在开发一个Javascript虚拟键盘,我希望每次用户按下文本字段时都会显示它。但是,我怎么知道是否选择了文本(或任何输入)字段?

- 澄清

我必须信息或控制将要加载的页面。我只是想要,如果选择了输入字段并且用户按下回车键,我的虚拟键盘就会出现。

- 更新

如果我正在尝试做的是firefox扩展,这会有什么不同吗? (我认为不应该)

5 个答案:

答案 0 :(得分: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;
                });
            });

答案 1 :(得分:1)

将其绑定到onfocus事件。当input元素获得焦点时触发该事件。如果要再次隐藏它,可以在onblur事件上再次移除键盘。

答案 2 :(得分:0)

要获得选择文本字段的通知,您可以将事件处理程序附加到您感兴趣的字段onfocus

jQuery中的示例(为简洁而选择jQ,事件在普通JS中工作):

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

如果您只想捕捉“输入”键,则无需担心焦点,只需附加到文本字段的onkeypress事件(请参阅@ poelinca的答案)。

答案 3 :(得分:0)

尽管jquery apologetes说了什么,但是如果不诉诸大而慢的外部库,就没有必要对所有字段进行检测:

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);

答案 4 :(得分:0)

我的解决方案目前只是在用户请求时使用指定的密钥来打开虚拟键盘。