Javascript 输入类型=号码无法在手机上插入负数

Javascript 输入类型=号码无法在手机上插入负数,javascript,android,ruby-on-rails,html,twitter-bootstrap,Javascript,Android,Ruby On Rails,Html,Twitter Bootstrap,我正在我的手机上测试我的应用程序(三星galaxy note II和chrome),我的数字输入字段有问题 在我的应用程序中,这些字段可以接受负数,而在浏览器上,这一切都很好,因为我有-按钮和箭头滑块(来自html5)来选择数字 在手机上,虽然滑块没有呈现,浏览器识别输入类型=数字,只是呈现一个简化的数字键盘,它不包含-符号,所以我没有找到插入负数的方法 我的应用程序在jquery中使用了twitter bootstrap 2.3.2,我不知道如何解决这个问题 以下是我的一个输入字段的代码,该字

我正在我的手机上测试我的应用程序(三星galaxy note II和chrome),我的数字输入字段有问题

在我的应用程序中,这些字段可以接受负数,而在浏览器上,这一切都很好,因为我有
-
按钮和箭头滑块(来自html5)来选择数字

在手机上,虽然滑块没有呈现,浏览器识别输入类型=数字,只是呈现一个简化的数字键盘,它不包含
-
符号,所以我没有找到插入负数的方法

我的应用程序在jquery中使用了twitter bootstrap 2.3.2,我不知道如何解决这个问题

以下是我的一个输入字段的代码,该字段在我的计算机上工作正常,但在我的手机上无法正确使用:

<input class="input-mini" data-type="distance_price" id="distance" label="false" name="distance" step="0.1" type="number" max="-0.1">

在图像中,您可以看到红色字段如何标记为错误,因为它需要为负数,但我的键盘不允许我插入符号。包括
-
符号。
有线索吗

创建一个额外的输入字段。“符号”复选框,选择自然整数或负整数


然后勾选复选框的onchange事件,以便更新数字视图以反映所选符号。

问题-为那些认为自己比所有人都聪明的供应商万岁。下面是关于这个问题的讨论

简而言之,没有办法让负号显示在三星安卓的数字输入上。以下是我遇到的一些变通方法:

1)谷歌键盘

用户可以安装不同的键盘(如)。显然,让人们安装一些东西并不理想

2)否定按钮

正如@Cris已经建议的,添加一个按钮,该按钮将否定该值。如果你有屏幕房地产,那就太好了

3)双点技巧

我们最终得到了一个相当糟糕的解决方案,用户可以按两次
,它将否定数字。完全不可发现,但额外的按钮不是我们的选择


如果使用value属性(value=“-0.1”)加载初始负值,则将为您预加载减号

<input class="input-mini" data-type="distance_price" id="distance" label="false" name="distance" step="0.1" type="number" max="-0.1" value="-1">

如果您返回此处是因为上面的双点技巧停止工作。。。它似乎更新了输入type=“number”字段的处理方式,使得第二个“点”甚至不会注册为击键,从而使双点无法工作。在我的例子中,我将JS中的测试行更改为

if (lastkey === "." && (key === "." || e.originalEvent.inputType == "deleteContentBackward")){

要创建同样粗糙的“点退格技巧”

您应该始终将电话号码作为字符串处理,而不是实际数字,因为它们是一个数字字符串(可能还有其他符号,如+),而不是数字。我对安卓系统的开发一无所知,但是如果你把数据类型改成字符串,会有帮助吗?@Max Williams:你听说过负面电话号码吗?也许你应该再读一遍这个问题……刚刚在Nexus4上用安卓4.4.2和Chrome 32.0.1700.99版用护目镜标准键盘和快捷键键盘进行了测试,两者都很好。也许这是“旧”设备和“旧”Android/Chrome版本的问题?如果这就是问题所在,那么您应该使用@MaxWilliams解决方案,使用纯字符串输入字段。在Nexus上适用于我。这似乎是某些类型的Android浏览器的一个缺陷,你总是可以为滑块实现Javascript回退。@morten,我的手机非常新,肯定比80%的智能手机用户的手机更新,它必须是手机/浏览器/操作系统的特定组合,我需要处理,否则我会失去这些用户。也许是的,这可能是一个解决方案,在手机上,这些字段变成文本,但是我必须在本地实现所有逻辑来验证这些字段。