5

我正在编写一个小的 javascript 实用程序来进行一些数字计算。几乎所有的输入都是真实的数字(也就是说,我正在用它们做数学;它们不是邮政编码或类似的东西)。其中一些数字表示在计算之前要添加到其他数字的修饰符。我希望这些数字显示为带符号的,如果值大于零,则带有前导加号。这在 Firefox 和 IE 中运行良好,它们对数字输入没有任何特殊作用。然而,Chrome 不允许在number输入值中使用加号,尽管parseFloat可以很好地处理它。现在,我的代码手动+在字段值前面加上 a,这会导致它在 Chrome 中中断。

有没有办法让它在 Chrome 中工作?显然(在“输入”元素之前或之后生成 CSS 内容:before在这里对我没有用处。理想情况下,我想保留这种number类型;如果一切都失败了,我可以使用text,但我依赖min,maxstep属性。

更新:添加novalidate到该字段允许加号,但随后 Chrome 将声明一个value空字符串。检查元素,当它无效时,我看不到任何获取显示值的方法,即使使用novalidate.

更新:似乎没有从无效字段中获取值的好方法(如何获取 <input type="number"> 字段的原始值?)。并且验证确认min,maxstep属性是不允许的input[type=text]。除非我想出别的东西,否则我可能会放弃加号。

4

2 回答 2

0

我试过带加号的数字。它似乎在 Chrome 中工作

<div ng-app>
<div ng-controller="PatternTestCtrl">
    <form name="ngform">
        <input type="number" name="numVal" ng-model="numValModel" ng-pattern="/[0-9]{5}/" maxlength="5" ng-maxlength="5"/>
    </form>
</div>
</div>
http://jsfiddle.net/jdev_hari/1c4te0cw/1/

我的浏览器版本是 37.0.2062.124 m。这仍然是一个问题吗?

于 2014-10-06T20:18:58.323 回答
0

我也有同样的问题。我使用 pattern 和 type="tel" 的解决方法来触发移动设备上的数字键盘

于 2017-01-28T17:58:19.573 回答