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

有什么办法可以在Chrome浏览器中正常工作吗?显然(CSS content generation before or after 'input' elements):before在这里不可用。理想情况下,我想保留number类型;如果所有其他方法都失败了,我只能使用text,但是我依赖minmaxstep属性。

更新:在字段中添加novalidate允许加号,但是Chrome会声明空字符串的value。检查该元素,即使使用novalidate,我也看不到任何方法来获得无效的显示值。

更新:似乎没有很好的方法从无效字段(How to get the raw value an <input type="number"> field?)中获取值。验证确认min不允许使用maxstepinput[type=text]属性。除非我提出其他建议,否则我可能只会放弃加号。

最佳答案

我尝试了带加号的数字。它似乎可以在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。这还是个问题吗?

10-05 20:50
查看更多