Chrome 中的数字输入不允许前导加号。解决方法?

Tho*_*ith 5 html google-chrome

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

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

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

更新:似乎没有什么好的方法可以从无效字段中获取值(How to get the raw value an <input type="number"> field?)。和验证确认minmaxstep属性都不允许input[type=text]。除非我想出别的东西,否则我可能会放弃加号。

小智 -1

我尝试了带加号的数字。似乎可以在 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/
Run Code Online (Sandbox Code Playgroud)

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