Недействительное текстовое поле Angular JS

Я пытаюсь сделать текстовые поля недействительными, когда к ним прикасаются и значение пустое, т.е. пользователь пытается ввести какое-то значение из этого поля и удаляет введенные данные. Затем я хотел показать сообщение об ошибке. Я использую приведенный ниже код для достижения этой функции -

html

<div class='form-control'>
    <input type='text'
           ng-pattern=vm.userNum.pattern
           id = {{vm.userNum.fieldName}}
           name = {{vm.userNum.fieldName}}
           ng-model='vm.userNum.newValue'
           minlength = {{vm.userNum.minlength}}
           ng-minlength = {{vm.userNum.minlength}}
           maxlength = {{vm.userNum.maxlength}}
           ng-required = {{vm.userNum.required}}
           ng-maxlength = {{vm.userNum.maxlength}}
           ng-change = "vm.userNumSetRequired()"
    />
    <div class = "input-icons">
        <i class = "fa fa-check form-control-feedback" ng-show = "(!vm.userNumReqErr && vm.userNum.$dirty && vm.userNum.$valid)" aria-hidden = "true"></i>
        <i class = "fa fa-exclamation-triangle form-control-feedback" aria-hidden = "true" ng-show = "vm.userNumReqErr || (vm.userNum.$dirty && vm.userNum.$invalid) || (vm.userNum.$invalid && vm.$submitted)"></i>
    </div>

    <div id = "errorFieldMessageuserNum" aria-live = "polite" class = "errorFieldMessage" ng-show = "(vm.userNumReqErr) || (vm.userNum.$dirty && vm.userNum.$invalid) || (vm.userNum.$invalid && vm.$submitted)">
        <div id = "userNumRequired" ng-show = "vm.userNum.$error.required">Required</div>
        <div id = "userNumMinRequired" ng-show = "vm.userNum.$error.minlength">min length error</div>
        <div id = "userNumMaxRequired" ng-show = "vm.userNum.$error.maxlength">max length error</div>
        <div id = "userNumPattern" ng-show = "vm.userNum.$error.pattern">pattern error</div>
        <div id = "userNumRequired1" ng-show = "vm.userNum.error">This field is required </div>
    </div>
</div>

JS - событие изменения текстового поля

vm.userNum = {};
vm.userNum.displayName = 'User Number';
vm.userNum.fieldName = 'userNum';
vm.userNum.minlength = 1;
vm.userNum.maxlength = 8;
vm.userNum.required = 'false';
vm.userNum.pattern = allowedNumeric;
vm.userNum.patternError = allowedNumericError;

if (vm.userNum.newValue == undefined || vm.userNum.newValue == '')) {
    vm.userNum.invalid = 'true';
    vm.userNum.error = 'true';
    vm.userNumReqErr = true;
}

Поскольку он не устанавливает userNum как недействительный, я пробовал ниже -

vm.userNum.$setValidity("invalid", true);

Он тоже не работает, и действительный всегда становится правдой

вы использовали vm.userNum.$touched или !vm.userNum.$pristine?

Rathma 09.09.2018 07:17
ng-required, ng-minlength, ng-maxlength все принимают выражения AngularJS. Особенно с ng-required использование интерполяции {{ }} вызовет проблемы.
georgeawg 09.09.2018 07:20

Спасибо за информацию об использовании Interpolation @georgeawg, кроме того, мне было интересно сделать действительный статус поля ввода на false ..

ChilBud 09.09.2018 10:04
Редактировать вопрос по исправлению проблем с интерполяцией, то при необходимости повторно открою вопрос. Настройка vm.userNum.required='false' отрывочна, потому что строка 'false' в JavaScript - это правдивый. Также я не рекомендую устанавливать элементы управления формы на то же имя объекта, что и данные формы. Кроме того, добавьте элемент <form> с его именем, чтобы мы могли видеть, как его элементы управления подключаются к шаблону.
georgeawg 09.09.2018 16:37

Объясните, что вы делаете с ng-pattern. Я не думаю, что он делает то, что ты задумал.

georgeawg 09.09.2018 16:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
20
0

Другие вопросы по теме