2012-06-07 354 views
29

我正在开发优惠券公司的前端网站,我有一个页面,用户只需输入电话号码和$$花费。我们想出了一个有趣的使用Javascript构建的屏幕键盘,易于使用且速度更快。但是,我正在寻找一种解决方案,在用户对焦并在这些字段中输入文本/数字时停止弹出软键盘。HTML手机 - 强制软键盘隐藏

我知道HTML5提出的“数字/电话/电子邮件”类型属性。但是,冒着疯狂的风险,我真的只想使用我的屏幕键盘。

注意:本网站主要针对平板电脑。

谢谢。

+1

这是_is_疯狂。如果您使用标准输入字段,请使用标准输入法。 – egrunin

+7

尽管如此,使用屏幕键盘还是有很多好处的,除此之外,使用和构建都很有趣。 其中之一,他们是高度可定制的,以密切关注您的观众的需求,第二安全,第三屏幕的房地产。;-) – crodica

+0

啊,我看到我误解为“前端*应用*”的“前端*网站*”。用户对网站的期望更高。 – egrunin

回答

34

由于软键盘是操作系统的一部分,通常情况下,您将无法隐藏它 - 同样,在iOS上,隐藏键盘会从元素中隐藏焦点。

但是,如果你使用的输入onFocus属性,然后blur()文本输入立即,键盘会隐藏自身和onFocus事件可以设置一个变量来定义其文本输入集中最后。

然后改变你的页面键盘,只改变最后聚焦(使用变量检查)文本输入,而不是模拟按键。

+0

谢谢Scott。当您使用常规的HTML表单进行测试时,如果没有屏幕上的键盘,您的建议可以很好地工作。看来我正在实现的jquery mobile或我正在使用的键盘对象正在创建他们自己的焦点事件,我还没有找到('焦点'是名称空间在库中某处)。就目前而言,我们的客户喜欢这个想法,但软键盘一直在弹出的事实已经关闭,所以我们正在放弃这个功能。 :( 我感兴趣的工作,所以如果有人有兴趣,这里是键盘库: https://github.com/Mottie/Keyboard – crodica

+4

只是一个想法 - 如果你把一个透明的div会发生什么在每个输入,然后使用的onClick方法例如:'

Text:
'父div的相对(或绝对的)定位导致绝对定位的孩子是相对于其父 –

36

斯科特S的答案完美无缺。

我正在为移动设备编写基于网络的电话拨号盘,每当用户按键盘上的数字(由表格中的td span元素组成)时,软键盘就会弹出。我还希望用户不能进入拨打号码的输入框。这实际上解决了一枪中的两个问题。下面使用:

<input type="text" id="phone-number" onfocus="blur();" /> 
+1

其实,这个答案为我工作好。 (@ScottS)的答案,并不尊重他的回答,我怀疑html输入语句和$(document).ready()之间经过的时间允许键盘触发,而onfocus = blur();会是至少在我的脑海中,速度更快,并且防止键盘开火, – HumbleBeginnings

10

如需进一步阅读器/搜索:

由于Rene Potthis topic指出,

通过设置输入字段readonly="true"你应该避免 任何人输入任何东西它,但仍然能够启动一个点击 事件就可以了。

使用此方法,您可以避免弹出“软”键盘并仍然启动点击事件/通过任何屏幕键盘填充输入。

该解决方案也适用于通常已经实现控件的日期选择器。

0

示例我是如何做到的,在填充最大长度后,它将模糊我的 字段(并且键盘将消失),如果您有多个字段,则可以添加我添加的行'/ /'

var MaxLength = 8; 
    $(document).ready(function() { 
     $('#MyTB').keyup(function() { 
      if ($(this).val().length >= MaxLength) { 
       $('#MyTB').blur(); 
      // $('#MyTB2').focus(); 
     } 
      }); });