1. ホーム
  2. javascript

[解決済み] 入力が数字のみであることを制限するにはどうしたらいいですか?

2023-02-17 11:02:23

質問

AngularJSでngChangeを使用して、ユーザーが入力に追加した文字を削除するカスタム関数をトリガーしています。

<input type="text" name="inputName" data-ng-change="numbersOnly()"/>

問題なのは、この入力をトリガーとして numbersOnly() をトリガーして、入力された文字を削除できるようにする必要があることです。Google で長い間懸命に探しましたが、これに関するものは見つかりませんでした。

どうしたらいいでしょうか?

どのように解決するのですか?

簡単な方法 は、使用する type="number"を使用します。 を使用してください。

<input type="number" ng-model="myText" name="inputName">

もう一つの簡単な方法。 ng-パターン はフィールドで許可されるものを制限する正規表現を定義するために使われることもあります。 また クックブック" フォームに関するページもご覧ください。 .

ハック的な? 方法 , コントローラのng-modelを$watchしてください。

<input type="text"  ng-model="myText" name="inputName">

コントローラーです。

$scope.$watch('myText', function() {
   // put numbersOnly() logic here, e.g.:
   if ($scope.myText  ... regex to look for ... ) {
      // strip out the non-numbers
   }
})

最適な方法 ディレクティブの中で$parserを使用することです。 私は@pkozlowski.opensourceによって提供されたすでに良い答えを繰り返すつもりはないので、ここにリンクがあります。 https://stackoverflow.com/a/14425022/215945

上記の解決策はすべて ng-model を使用するものであり、これによって this を探す必要はありません。

ng-changeを使用すると問題が発生します。 参照 AngularJS - $scope.valueのリセットがテンプレート内の値を変更しない(ランダムな挙動)