2015-10-16 9 views
0

Когда я устанавливаю значение на вход с type="date", AngularJS не будет знать, имеет ли элемент значение. Ниже приведен пример кода.AngularJS ngRequired ngDisabled не работает

<script src="angular.min.js"></script> 
<div name="mainForm" ng-app="appTesting" ng-controller="ctrlTesting" ng-form> 
    <input type="date" ng-model="dateField" name="dateField" id="dateField" required /> 
    <button ng-disabled="mainForm.dateField.$error.required">A disabled button</button> 
    <button ng-click="setValue()">Set Value</button> 
</div> 
<script> 
angular.module("appTesting", []).controller("ctrlTesting", function($scope, $filter) { 
    $scope.setValue = function() { 
     $scope.dateField = $filter('date')(new Date(), 'yyyy-MM-dd'); 
     document.getElementById('dateField').value = $filter('date')(new Date(), 'yyyy-MM-dd'); 
    }; 
}); 
</script> 

Отключенная кнопка остается отключенной после установки значения в поле ввода.

Есть ли способ установить вручную $error.required в true? Или, есть способ вручную запустить ng-disabled проверку после установки значения?

ответ

1

Error: [ngModel:datefmt] Expected `2015-05-29T19:06:16.693209Z` to be a date - Angular, связанные с

вашей переменной ngModel области видимости не является допустимым объектом Дата.

Просто введите свой dateField переменную до setValue.

$scope.dateField = new Date(); 
+0

Да, это правильный ответ. Спасибо, сэр. :) – juntapao

0

Я не знаю, почему он не должен работать для вас, но это JSFiddle работает отлично:

HTML:

<div ng-app="app"> 
    <div name="mainForm" ng-app="appTesting" ng-controller="ctrlTesting" ng-form> 
     <input type="date" ng-model="dateField" name="dateField" id="dateField" required /> 
     <button ng-disabled="mainForm.dateField.$error.required">A disabled button</button> 
     <button ng-click="setValue()">Set Value</button> 
    </div> 
</div> 

JS:

var app = angular.module("app", []); 
app.controller('ctrlTesting', ['$scope', '$filter', function ($scope, $filter) { 
    $scope.setValue = function() { 
     $scope.dateField = $filter('date')(new Date(), 'yyyy-MM-dd'); 
     document.getElementById('dateField').value = $filter('date')(new Date(), 'yyyy-MM-dd'); 
    }; 
}]); 
+0

Может ли кто-нибудь объяснить причину, почему это не работает для меня? Я использую Chrome в качестве браузера. – juntapao

+0

Вы проверили консоль отладки на наличие ошибок? –

+0

Да, но я не нахожу ошибок. – juntapao

0

InstEd использования "myForm.input. $ error.required ", вы можете использовать" myForm.input. $ error.date ".

Это будет служить всем вашим требованиям, которые вы хотите получить от обязательного атрибута.

+0

Спасибо, но ngDisabled не работает. Вы можете проверить с помощью скрипта из предыдущего ответа. – juntapao

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