Я пытаюсь добавить событие angularJs к кнопке, если значение поля ввода изменяется. Но я не могу найти решение, как мне это сделать. Я знаю, как обнаружить изменение, но не знаю, как добавить новое событие с помощью контроллера. Позвольте мне проиллюстрировать на примере:
<form name = "addNewCourse">
<input ng-model = "courseNameEdit" ng-value = "courseName" ng-pattern = "regex" ng-trim = "false" name = "addNewCourseField" ng-minlength = "5" ng-maxlength = "60" required>
<div ng-messages = "addNewCourse.addNewCourseField.$error" style = "text-align: left !important; color:red;">
<div ng-message = "required">This field is required*</div>
<div ng-message = "pattern">Must be only digits or numbers</div>
<div ng-message = "maxlength">Must not exceed 60 characters</div>
<div ng-message = "minlength">Must not be smaller than 5 characters</div>
</div>
<button class = "btn btn-primary" ng-click = "saveCourseNameFunc(courseNameEdit)">Save</button>
</form>
я хочу добавить ng-disabled = "addNewCourse.$invalid"
в кнопку, если значение изменится с помощью контроллера. Заранее спасибо.
Если я не ошибаюсь, вы собираетесь проверить свою форму, пока значение поля изменяется через контроллер. Попробуйте решение ниже и дайте мне знать, если это не сработает для вас.
FORMOBJECT.$setSubmitted();
Вы также можете попробовать запустить событие изменения этого поля через контроллер, например:
angular.element('#INPUT_ID').trigger('change');
Надеюсь, вы получите решение из одного из приведенных выше.
Как насчет того, чтобы использовать ng-change
и логическое значение в выражении ng-disabled
, просто активируйте инвалидность.
<form name = "addNewCourse">
<input ng-change = "changed()" ng-disabled = "addNewCourse.$invalid && activeDisable" ng-model = "courseNameEdit" ng-value = "courseName" ng-pattern = "regex" ng-trim = "false" name = "addNewCourseField" ng-minlength = "5" ng-maxlength = "60" required>
<div ng-messages = "addNewCourse.addNewCourseField.$error" style = "text-align: left !important; color:red;">
<div ng-message = "required">This field is required*</div>
<div ng-message = "pattern">Must be only digits or numbers</div>
<div ng-message = "maxlength">Must not exceed 60 characters</div>
<div ng-message = "minlength">Must not be smaller than 5 characters</div>
</div>
<button class = "btn btn-primary" ng-click = "saveCourseNameFunc(courseNameEdit)">Save</button>
</form>
и ваш контроллер должен содержать что-то вроде этого:
$scope.activeDisable = false;
$scope.change = function(){
$scope.activeDisable = true;
}
Почему вы не можете просто добавить это в шаблон сейчас? Почему это нужно делать с контроллера?