2017-06-14 5 views
1

ここにはテキストボックスがあります。そのフィールドには、数字、アルファベット、スペイン語の文字のみを許可する必要のある検証があります。そのために、私はjavascriptで関数を見つけました。その機能はng-keypressにあり、ng-changeに変更したい。私が変更した場合、機能は発砲していません。ng-keypressをng-change関数に変更する方法

機能を変更する方法。

JSPコード: -

<input type="text" ng-model="name" ng-keypress="getPatternForAlphebet($event,$index)"> 

スクリプトコードは: -

$scope.getPatternForAlphebet = function(event,rowIndex){ 
     var key = key || event.which; 
     if($scope.documentTypeNumber==1 || $scope.documentTypeNumber ==2){ 
      if ((key > 64 && key < 91)|| (key > 159 && key < 166) || (key > 96 && key < 123) || (key == 165) ||(key == 32) 
        || (key == 164) || (key == 130) || (key == 181) || (key == 144) || (key == 214) || 
        (key == 224) ||(key == 233) || (key == 8) || (key == 241) || (key == 209)) { 
      }else{ 
       event.preventDefault(); 
      } 
     }else if($scope.documentTypeNumber==6){ 
      if ((key > 64 && key < 91)|| (key > 159 && key < 166) || (key > 96 && key < 123) || (key == 165) ||(key == 32) || 
        (key == 59) || (key == 164) || (key == 58) || (key == 46) || (key == 44) || (key == 38) || 
        (key == 34) || (key == 130) || (key == 181) || (key == 144) || (key == 214) || 
        (key == 224) ||(key == 233) || (key == 8) || (key == 241) || (key == 209)) { 
      }else{ 
       event.preventDefault(); 
      } 
     } 
    }; 
+1

こんにちは@Rakesh、$イベントはng-changeに利用できるプロパティではありません。あなたは他の解決策を見つけなければなりません。 –

答えて

0

へのリンクに従ってください。必要に応じて次のコードを更新してください。これが役立つことを願っています。 Backspaceのキーコードを追加し、両方で削除してください。ありがとうございます

<input type="text" ng-model="name" documentvalue="{{documentTypeNumbe}}" filtered-character> 

directive('filteredCharacter', function() { 
    return function (scope, element, attrs) { 

    element.bind("keydown paste", function (event) { 
     //console.log($.inArray(event.which,keyCode)); 
     var keyCode = []; 
     if (attrs.documentvalue == 1 || attrs.documentvalue == 2) { 
     keyCode = [65, 91, 159]; // Please add all the required key codes 
     } else if (attrs.documentvalue == 6) { 
     keyCode = [67, 93, 161]; // Please add all the required key codes 
     } 
     if ($.inArray(event.which, keyCode) === -1) { 
     scope.$apply(function() { 
      scope.$eval(attrs.filteredCharacter); 
      event.preventDefault(); 
     }); 
     event.preventDefault(); 
     } 

    }); 
    }; 
}); 
+0

これはいいですが、if($ scope.documentTypeNumber == 1 || $ scope.documentTypeNumber == 2){} esle {}のような条件を持っています – Rakesh

+0

この$ scope.documentTypeNumberをどこから入手できますか? –

+0

角度コントローラー – Rakesh

1
ng-change

ng-modelと共に使用されなければなりません。したがって、入力フィールドにng-modelを追加してください。

読むよりおよそng-changehere

EDIT:

としてアレクシストビーng-change$eventを持っていない、と述べました。それを除く。それが動作します。

+0

コンソールエラー? – SaiUnique

+0

コンソールエラーはありません – Rakesh

+0

このplunkerを一度見てください。それはうまくいくはずです://plnkr.co/edit/73iVEr2mR0APHMeNgzWp?p = preview – SaiUnique

0

「ng-keydown」を使用して同じ機能を呼び出すようにしてください。私はあなたの代わりにディレクティブを使用することができると思う。このplunker

+0

plunkerは動作していません – Rakesh

+0

"ng-keydown"を使ってみましたか? –

+0

はい私はこれを試しました – Rakesh

関連する問題