代码之家  ›  专栏  ›  技术社区  ›  Student

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

  •  1
  • Student  · 技术社区  · 14 年前

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

    --澄清

    我必须了解或控制将要加载的页面。我只想,如果选择了一个输入框,用户按下回车键,我的虚拟键盘就会出现。

    --更新

    如果我要做的是firefox扩展有什么区别吗?(我认为不应该)

    5 回复  |  直到 14 年前
        1
  •  3
  •   Poelinca Dorin    14 年前

    使用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;
                    });
                });
    
        2
  •  1
  •   Mark Baijens    14 年前

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

        3
  •  0
  •   Piskvor left the building Rohit Kumar    14 年前

    若要获得选定文本字段的通知,可以将事件处理程序附加到 onfocus 你感兴趣的领域。

    jQuery中的示例(为简洁起见,选择了jQ,事件在纯JS中工作):

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

    如果您只想捕获“enter”键,则不需要担心焦点,只需附加到文本字段的onkeypress事件(请参见@poelinca的答案)。

        4
  •  0
  •   Free Consulting    14 年前

    尽管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);
    
        5
  •  0
  •   Student    14 年前

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