I have restrict for a text field in html.In this way went to developed a directive for allow only numbers even copy and paste also restriction.but I am getting some problem when copy and paste a number even though not allowing.because last keyup in ctrl+v is v thats why not allowing.I used below code.I wanna some condition based allowed to alphabet thats why I used type="text".
<input type="text" min="0" name="inputName" ng-model="myModel" dl-enter-Num="closeModalWindow();" >
app.directive('dlEnterNum', function() {
return function($scope, element, attrs) {
element.bind("keydown keypress paste", function(event) {
var keyCode = event.which || event.keyCode;
if($scope.documentTypeNumber==1 || $scope.documentTypeNumber ==2){
var keys={
'up': 38,'right':39,'down':40,'left':37,'space':8,'ctrl':17,
'escape':27,'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
};
for(var index in keys) {
if (!keys.hasOwnProperty(index)) continue;
if (event.charCode==keys[index]||keyCode==keys[index]) {
if(keyCode==39 || keyCode==46 || keyCode==38 || keyCode==37 || keyCode==40 || keyCode==64){
}else{
return; //default event
}
}
}
event.preventDefault();
}else if($scope.documentTypeNumber==6){
if (event.shiftKey && event.keyCode < 65 && event.keyCode > 90) {
event.preventDefault();
}
if (event.keyCode == 46 || (event.keyCode>90 && event.keyCode<97)) {
event.preventDefault();
}
else {
if (event.keyCode < 65) {
if ((event.keyCode != 32 && event.keyCode < 44) || event.keyCode > 57 || event.keyCode ==46 || event.keyCode ==47) {
event.preventDefault();
}
}
else {
if (event.keyCode < 65 || event.keyCode > 122) {
event.preventDefault();
}
}
}
}
});
};
});
"input"will cover the 3 events shown