Android(phonegap)点击一个输入随机触发不同的键盘

时间:2013-05-17 13:29:48

标签: java javascript android html cordova

我正在为Android开发一个phonegap应用程序。

如果您不熟悉phonegap,只需知道它是一个包含webview的应用程序,其余部分由html / js组成。

我有一个正常的输入,当我点击它时,我有一个触发的普通键盘,右下角有一个“开始”按钮。

但有时,我得到的键盘右下角只有一个“Enter”键。这个键盘通常很奇怪,并且不想隐藏。

我无法理解为什么我的输入会触发不同的键盘。我只想保留第一个键盘。

good one

bad one

1 个答案:

答案 0 :(得分:0)

所以iScroll + Android + Form字段似乎并不能很好地协同工作。我遇到了一些令人讨厌的问题,文本框消失,工作不正常,键盘移动整个页面。奇怪的东西。

我们通过在每个文本框/选择/表单字段的stopPropagation上设置touchstart来解决它,它解决了我们的问题。

var selectField = document.getElementById('textbox');   
    selectField.addEventListener('touchstart', function(e) {
        e.stopPropagation();
        //updateScrollPosition(this, true);
    }, false);

修改

我能想到的其他解决方法是覆盖onBeforeScrollStart以防止在所选元素中发生触摸时滚动(输入,选择和textAreas是问题,但你可以定位任何东西):

iScroll.options.onBeforeScrollStart = function(e) {      

    var target = e.target;


    while (target.nodeType != 1) target = target.parentNode;     
    if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA'){
        e.preventDefault();
     }};

}

编辑2

所以上述两点都没有帮助。我曾经发生同样的事情,所以我想出了一个(可怕的)黑客来解决这个问题。我无法分享这段代码(哦许可证!)但我所做的步骤是:

  • 检查它是否为android,版本低于3.0
  • 隐藏您的输入并替换为div
  • 当您单击div时,运行触发单击隐藏的EditText
  • 的本机位层
  • 添加textChangeListener并将所有内容复制到div和输入中。
  • 真的很生气,这是你找到的最好的解决方案,并在桌面上反复敲击键盘。