2017-06-14 38 views
1

這裏我有一個文本框。在該領域有一個驗證,只需要允許數字,字母和西班牙字符。爲此,我在javascript中找到了一個函數。該功能在ng-keypress中,我想將其更改爲ng-change。如果我改變,該功能不會觸發。如何將ng-keypress更改爲ng-change功能

如何將函數更改爲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

我想你可以使用指令來代替。請根據需要找到下面的代碼更新它,我希望這會有所幫助。請在兩者中添加退格和刪除的鍵碼。謝謝

<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

這是好的,但我有條件喜歡如果($ scope.documentTypeNumber == 1 || $ scope.documentTypeNumber == 2){} esle {} – Rakesh

+0

你在哪裏得到這個$ scope.documentTypeNumber? –

+0

角度控制器 – Rakesh

1

ng-change必須ng-model使用。因此,將ng-model添加到輸入字段。

瞭解更多關於ng-changehere

編輯:

由於亞歷克西斯托比說,ng-change沒有$event。去掉它。它會工作。

+0

任何控制檯錯誤? – SaiUnique

+0

沒有控制檯的錯誤 – Rakesh

+0

一旦看到這個砰砰聲。它應該工作.https://plnkr.co/edit/73iVEr2mR0APHMeNgzWp?p =預覽 – SaiUnique

0

嘗試使用「ng-keydown」調用相同的函數。請點擊此鏈接plunker

+0

plunker不工作 – Rakesh

+0

你嘗試使用「ng-keydown」嗎? –

+0

是的,我已經嘗試 – Rakesh