2016-03-03 56 views
0

我試圖驗證日期(DD/MM/YYY)輸入,然後,如果它不是日期不允許進入 - 如字符串或任何angularjs日期僅輸入

下面是我的代碼,但不工作 - 手段讓用戶輸入任何內容

angular.module('app') 
.directive('onlyDates', function() { 
    return { 
     require: 'ngModel', 
     restrict: 'A', 
     link: function (scope, element, attr, ctrl) { 
      function inputValue(val) { 
       if (val) { 
        var reg = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g; 
        var res = reg.test(val); 
        if (!res) { 
         ctrl.$setViewValue(val); 
         ctrl.$render(); 
         return NaN; 
        } 
        return val; 
       } 
       return undefined; 
      } 
      ctrl.$parsers.push(inputValue); 
     } 
    }; 
}); 
+0

使用可以使用NG模式 –

+0

NG模式,允許用戶輸入文本,然後驗證,但我想阻止用戶輸入任何隨機文本 –

+0

可能幫助ühttp://codepen.io/TheLarkInn/post/angularjs-directive-labs-allowpattern-directive-fun-with-keycodes –

回答

0

你可以嘗試使用ng-change和一些功能,可以檢查「鍵入」什麼你進入你的模式匹配,如果沒有,刪除最後輸入的字符。

<input type="text" ng-model="txtValue" ng-change="TextBoxChangedCheck()"> 


$scope.TextBoxChangedCheck = function() { 
      //// enter your text validation here 
     }; 
+0

用戶在輸入時修改該值不方便用戶使用。讓他們完成,然後檢查。例如。如果他們輸錯了一個字符,然後按刪除將其刪除,該功能可能已經刪除了錯字的字符,因此他們刪除了一個額外的字符,然後繼續從他們認爲他們在模式中的位置打字,這可能會產生另一個錯誤,所以上。 – RobG

+0

是的,也許它不是,但無論如何,用戶體驗就像是隻有數字字段 – JulioCT