数字键盘上的数字是否与键盘顶部的数字不同?
这是一些应该在keyup事件上运行的JavaScript,但只有当keycode介于48和57之间时.这是代码:
$('#rollNum').keyup(function(e) {
    if(e.keyCode >= 48 && e.keyCode <= 57) { //0-9 only
        var max = 15;
        var textLen = $(this).val().length;
        var textLeft = max - textLen;
        . . . 
我的问题是,此代码仅响应键盘顶部输入的数字而运行,但不响应从数字键盘输入的数字而运行.
我想答案必须是数字键盘有不同的keyCode值,但我怎么知道它们是什么?
对于一个EditText盒子,用户应该只输入有效数字,所以我正在使用android:inputType="numberDecimal".不幸的是,Android提出的软键盘只有顶行的数字,而接下来的三行有各种其他符号(美元符号,百分号,感叹号,空格等).由于numberDecimal只接受数字0-9,负号和小数点,因此使用"手机"软键盘(3x3网格中的0-9,加上其他一些符号)会更有意义.这将使按钮更大并且更容易被击中(因为它是4x4网格而不是同一屏幕区域中的10x4网格).不幸的是,使用android:inputType="phone"允许非数字字符,如括号
我试图使用android:inputType="numberDecimal|phone",但numberDecimal位标志的方面似乎被忽略了.我也试过android:inputType="phone"结合使用android:digits="0123456789-.",但仍然允许多个负号或小数点(inputType="number"对于这样的事情有非常好的错误检查,并且不会让用户输入它).我也尝试android:inputType="phone"在xml布局文件中使用,同时DigitsKeyListener在java代码中使用a ,但是那只是使用默认数字软键盘(只有顶行有数字的键盘)(它似乎设置InputType.TYPE_CLASS_NUMBER,这使得InputType.TYPE_CLASS_PHONE集合无效通过xml布局).
编写自定义IME不起作用,因为用户必须选择IME作为应用程序外的全局选项.
有没有办法使用"手机"式软键盘同时使用"数字"限制输入什么?
我想在Android上点击按钮,以编程方式显示数字拨号键盘(电话).代码可用于直接拨号,但我只需要在单击按钮时显示拨号键盘.
android中是否有一种方法可以调用仅数字键盘,即只包含数字0到9和"."的虚拟键盘.标志?
你好我的应用程序中有两个UITextFields,当我只是触摸UITextFields以外的任何地方时想要解除键盘我该怎么办?
是否可以在iPad中显示仅包含0-9数字的键盘?我不希望键盘显示任何其他内容.我知道我们可以在.xib文件中使用这个KeyboardType:Number Pad,但它会显示包括数字在内的所有其他额外字符.我想使用这个概念来显示我正在处理的iPad应用程序的PIN登录键盘.谢谢
我一直在阅读许多其他问题,例如[1] [2] [3],但问题仍然存在.
我需要找到"最干净"的方式来input获得移动设备的HTML 并尊重所有这三个规则:
我一直在讨论这些解决方案,这两个主题都没有累积地尊重上述三条规则.
<input type="text" pattern="\d*" />
此解决方案尽管在iOS中工作并且完成了由w3验证器测试的HTML规则,但在Chrome Android中提供了带有QWERTY键盘的完整键盘.
<input type="number" pattern="\d*" />
此解决方案适用于iOS和Android Chrome系统,显示两个系统上的数字键盘,但它会抛出HTML验证错误
仅当输入类型为电子邮件,密码,搜索,电话,文本或URL时,才允许使用属性模式.
<input type="number" />
此解决方案通过HTML测试,在Chrome上显示不错,但在iOS键盘上显示了几个不需要的密钥
我看到许多开发人员使用此解决方案
<input type="tel" />
但是经过Android Chrome测试,它不允许使用点符号(.),并且键有字母,这是多余的.
html-input mobile-safari numeric-keypad android-keypad iphone-keypad
最新的MacOS Safari和iOS5中的Safari会有一些额外的验证,如果文本字段不是电话号码,则会导致问题.
案例:输入type ="numeric"属性的文本字段.
问题:1)号码被格式化为电话号码.例如,如果我键入'012345678',它将被格式化为'012 345 678'
2)正在删除前导零.例如'01234567'被格式化为'1234567'
我可以在我的文本字段中删除type ="numeric"属性,可能问题会消失,但我真的想在这个文本字段中使用数字小键盘而不是iPhone上的普通键盘.
任何想法如何解决这一问题?
非常感谢
目标:找到一个跨平台解决方案,用于在移动触摸设备上显示数字键盘,并且只需最少的黑客攻击.
问题:
我有一个使用数据输入表单的常规Web应用程序,主要包含数字数据.当用户在移动设备上与我的网站进行交互时,我想显示数字虚拟键盘,因为大多数标准键盘需要第二次按下才能从alpha切换到数字.我知道我可以通过设置input元素的"type"属性来触发不同的键盘:
type=number:这在iOS/Safari下运行良好.我不确定该平台上的其他浏览器.
在Android上,这并不能在各种浏览器上持续提升正确的键盘,并且通常会在输入上产生不需要的电梯按钮.我还没有找到一种干净的方法来在CSS中关闭它们.
type=tel:这几乎适用于iOS/Safari,但电话键盘没有小数点按钮.
似乎在多个Android浏览器中运行良好,没有任何无关的UI元素添加到页面.
我目前的解决方案是hacky和简单.基于我已经用于数字验证的类,我将每个应该包含数字的文本元素替换为基于检测到的OS /浏览器的新输入number或tel类型.
var isAndroid = navigator.userAgent.match(/android/i) ? true : false;
var isIOS = navigator.userAgent.match(/(ipod|ipad|iphone)/i) ? true : false;
if (isAndroid || isIOS) {
    var useNumberType = (isIOS ? true : false); //iOS uses type=number, everyone else uses type=tel
    jQuery("input.num").each(function () {
        var type = (useNumberType ? "number" : "tel");
        var html = this.outerHTML;
        html = html.replace(/(type=\"?)text(\"?)/, "$1" + type + "$2");
        this.outerHTML = html;
    }); …我们有一个使用webview呈现一些HTML页面的应用程序.这个HTML页面有输入类型,我们使用input-type = number,因为我们只接受此字段中带小数的数字.所以数字android键盘出现小数点.
问题是三星设备更新到Android 4.3.现在数字键盘上缺少小数点.

因此我们需要使用通用键盘来获得小数点.问题是公共键盘出现了字母,我们默认希望键盘出现在键盘的数字部分,以使用户更友好.像这样.

我们怎样才能做到这一点?
编辑:也许我没有解释清楚.问题是在一个不在android TextView中的HTML页面所以所有的android:type答案都没用.
numeric-keypad ×10
android ×5
javascript ×2
validation ×2
buttonclick ×1
html-input ×1
ios ×1
ios5 ×1
ipad ×1
iphone ×1
jquery ×1
keyboard ×1
phone-call ×1
safari ×1
textfield ×1
uitextfield ×1
webview ×1