2016-03-08 2 views
1

Скажем, у меня есть поле <input> с атрибутом type='date'. Когда он нетронутый, он отображает дату как mm/dd/yyyy. Есть ли способ, используя директиву AngularJS ng-blur, чтобы очистить поле до этого состояния, когда пользователь вводит ввод, скажем, 03/21/2016, удаляет одно из полей (например, 03/dd/2016), а затем щелкает за пределы (размывает) поле?Как очистить недействительное поле даты при размытии? (AngularJS)

+0

Установить переменную области видимости 'ng-model' связывается с новой' Date() '? –

+0

Новый объект даты имеет значение текущей даты – pv93

+1

Как ни странно, вам, похоже, придется сбросить его с помощью встроенного JS или jQuery: '$ (" input "). Val (null);' - см. Здесь: https://jsbin.com/bivuqitefi/1/edit?html,js,output –

ответ

0

нг размытости,

В вашем HTML

<input type="date" ng-model="date" ng-blur="blured()" /> 

В контроллере

$scope.blured = function() 
{ 
    // check the date 
    // if invalid 
    $scope.date = null; 
} 

Смотри также:

https://docs.angularjs.org/api/ng/directive/ngBlur

+0

Это не имеет желаемого эффекта, потому что, хотя для модели установлено значение null, в поле ввода по-прежнему отображается неверная дата (например, 02/мм/2017). Мне нужен способ очистить представление, а также модель. И в случае, если вы собираетесь спросить, значение $ viewValue на недопустимом входе уже установлено в пустую строку, поэтому манипулирование этим не делает ничего. – pv93

+0

- [это] (http://jsfiddle.net/nzPJD/252/) желаемый эффект? –

0

В вашем HTML

<input type="date" ng-model="date" ng-blur="blured(date,$event)" /> 

В вашем JS

$scope.blured= function (inputdate, e) { 
      if (!e.ctrlKey && !e.metaKey && (e.keyCode == 32 || e.keyCode > 46)) 
       doFormat(e.target); 
      if (e.target.value.length == 10) { 
       $scope.IsValidDate(1, e.target.value); 
      } 
     } 

     //id is used to check which date control 
     //method is used to validate entered date in MM/dd/yyyy format 
     $scope.IsValidDate = function (id, dateValue) { 
      var formats = ['MM/DD/YYYY'] 
      if (!moment(dateValue, formats).isValid()) { 
       if (id == 1) { 
        $scope.date = null; 
       } 
      } 
     } 

Надежда эта работа для вас, он работал на меня.

Смежные вопросы