2016-07-08 9 views
0

以下の入力タイプ番号があります。数字と一緒に、他のキーボードの文字を受け入れたい。 "null"、 "+"、 " - "の値を受け入れるためにng-patternを使用しました。入力タイプ番号+ ' - '記号を許可するng-keypress

ng-keypress関数もあります。 189、 '減算':109。これらは、キーボードから ' - 'を受け入れるためのキーボードコードです。

何とか「 - 」を受け入れていません。私は ' - 'が受け入れられるように様々なパターンを入れようとしました。しかし、それはdoesntです。

<input ng-keypress="Num($event)" type="number" step=".1" ng-pattern="/^[+-]?(?:\d+\.?\d*|\d*\.?\d+)[\r\n]*$|^$/" ng-model="dataip"></> 


$scope.Num = function (event) { 
    var keys = { 
     'up': 38, 'right': 39, 'down': 40, 'left': 37, 
     'escape': 27, 'backspace': 8, 'tab': 9, 'enter': 13, 'del': 46, 
     '0': 48, '1': 49, '2': 50, '3': 51, '4': 52, '5': 53, '6': 54, '7': 55, '8': 56, '9': 57, 'dash':189, 'subtract':109 
    }; 
    for (var index in keys) { 
     if (!keys.hasOwnProperty(index)) continue; 
     if (event.charCode == keys[index] || event.keyCode == keys[index]) { 
      return; //default event 
     } 
    } 
    event.preventDefault(); 
}; 

誰かが見てとアドバイスを...持ってくださいすることができ

答えて

1

このASCII表をご覧下さい:enter image description here 文字コード(12月列)-ためJSBinを取り組んでいる。ここ45

されます:https://jsbin.com/yipigicuve/edit?html,console,output

私は入力要素にtype="number"を設定する必要はないと思います。 --3---8438などの入力も考えてください。現在、このような入力を受け入れています。 https://github.com/candreoliveira/ngMaskのようなライブラリを使用することを検討してください。

+0

ありがとうcsharpfolk。 – Patrick

関連する問題