2016-08-23 27 views
0

我想限制用戶鍵入除「打開」或「關閉」字符串值以外的其他值。角JS文本框驗證允許特定的文本限制其他值

這意味着用戶只能鍵入「打開」或「關閉」文本,而且maxlength是6.爲此創建了指令,但仍然允許其他文本值,如何捕獲或允許用戶只鍵入這兩個文本值。

plunkr鏈接

http://plnkr.co/edit/LFbPbRAMyYZGhTZ1F7GU?p=preview

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 


}); 

app.directive('wmBlock', function ($parse) { 
    return { 

     link: function (scope, elm, attrs) { 

      elm.bind('keypress', function(e){ 

      if(scope.foo==="open" || scoe.foo==="closed"){ 
       return true; 
      } 
      else 
      { 
       e.preventDefault(); 
       return false; 
      } 
      } 
      }); 
     } 
    } 
}); 
+0

不錯的嘗試,但是當你有兩個已知選項的簡單要求.......你爲什麼不嘗試用一個下拉菜單 –

+0

http://jsfiddle.net/vfsHX/2422/ – SivaRajini

+0

不錯的工作.. ..... –

回答

0
app.directive('wmBlock', function ($browser, $parse) { 
    return { 

    link: function ($scope, $element, $attrs, ngModelCtrl) { 

     $element.bind('keypress', function(e){ 

     $browser.defer(
      function(){ 

      var modelGetter = $parse($attrs['ngModel']); 

      var value = modelGetter($scope); 
      var expression = new RegExp(/^(open|close)$/); 
      if(expression.test(value)) 
       alert("founded!"); 

      }); 


     }); 
    } 
    } 
}); 
0

我已經這樣做了使用$腕錶功能

app.directive('isNumber', function() { 
    return { 
     require: 'ngModel', 
     link: function (scope) {  
      scope.$watch('opennumber', function(newValue,oldValue) { 
      if(newValue=="o" || newValue=="c") return; 
      if(newValue=="op" || newValue=="ope" || newValue=="open") return; 
      if(newValue=="cl" || newValue=="clo" || newValue=="clos" || newValue=="close" || newValue=="closed") return; 

       if (newValue) { 
        scope.opennumber = oldValue; 
       } 
      }); 
     } 
    }; 
}); 

的jsfiddle

http://jsfiddle.net/vfsHX/2422/