5

数値計算を行う小さな JavaScript ユーティリティを作成しています。ほとんどすべての入力は真の数値です (つまり、私はそれらを使って計算を行っています。郵便番号などではありません)。これらの数値の一部は、計算前に他の数値に追加される修飾子を表します。これらの数値を符号付きで表示し、値がゼロより大きい場合は先頭にプラス記号を付けたいと思います。これは Firefox と IE で問題なく動作します。これらは数値入力に対して特別なことを行いません。numberただし、Chrome では入力の値にプラス文字を使用することはできませんが、問題なくparseFloat処理できます。現在、私のコードは+フィールドの値に手動で a を追加しているため、Chrome で壊れます。

これをChromeで機能させる方法はありますか? どうやら ( 'input' 要素の前後の CSS コンテンツ生成):beforeは、ここでは役立たないでしょう。number理想的には、型を維持したいと思います。他のすべてが失敗した場合は、 を使用できますが、 、、および属性textに依存しています。minmaxstep

更新:novalidateフィールドに追加するとプラス記号が許可されますが、Chrome はvalue空の文字列の a を要求します。要素を調べると、無効な場合に表示された値を取得する方法がわかりませんnovalidate

更新: 無効なフィールドから値を取得する良い方法がないようです ( <input type="number"> フィールドの生の値を取得する方法は? )。また、検証により、、、および属性が に対して許可されていないことが確認minmaxstepます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 に答える