2016-08-29 2 views
0

Я пытаюсь настроить проверку формы с помощью контроллера для этого. Я хочу проверить, являются ли все обязательные поля (два текстовых поля и один флажок) пустыми, но он не работает должным образом.Настроить проверку формы

$scope.update = function() { 
    angular.forEach(['lastName', 'umail'], function (input) { 
     if (!$scope[input]) { 
     alert('Input: ' + input.name); 
     angular.element($(input)).css('border', '1px solid #ff0000 !important'); 

     return false; 
    } 
    }); 
}; 

HTML:

<input type="text" name="user_LastName" value="" 
    ng-model="lastName" ng-class="txtlnmcolor" 
    placeholder="{{user_LastName}}" class="input-lastname" 
    required> 

<input type="text" name="pemail" value="" 
    ng-model="umail" ng-class="mailerror" 
    placeholder="{{pemail}}" class="input-mail"> 

<input type="checkbox" name="user.TermsConditions" value="true" class="checkbox-terms" ng-model="terms" ng-required="{{checked}}"> 
... 
... 
<label class="btn-submit" ng-click="update();"></label> 

Любая идея, пожалуйста? Благодаря!

+0

«он не работает должным образом» -> Как это работает? Вы получаете предупреждения? Это вызов функции 'update()' при нажатии кнопки или нет? Особенности, пожалуйста! :) EDIT: Кроме того, вы, вероятно, не должны использовать jQuery, чтобы добавить CSS во входные данные, а скорее использовать директивы ng-style или ng-класса. – Fissio

+0

Да, я получаю предупреждение. Но граница не стать красным. Я попробую с ng-style или ng-class. Это хороший намек. –

+0

ng-style делает материал для текстовых полей. angular.forEach (['lastName', 'umail', 'terms'], function (input) { if (! $ Scope [input]) { $ scope.style = { border: '1px solid # ff0000' }; } }); Как насчет флажка, а затем о поиске? Это не то значение, которое можно проверить. –

ответ

0

Вы можете использовать угловые свойства собственной формы, такие как formName.elementName. $ Error или formName. $ Valid и классы, добавленные угловыми как .ng-invalid или .ng-valid. Вы не должны использовать точки на имени элементов, то есть user.TermsConditions, проще проверить, получил ли элемент какую-либо ошибку, вы можете использовать formName.userTermsConditions. $ Error вместо formName ['user.TermsConditions']. $ Error.

В прошлом, чтобы вызвать угловую использовать собственные проверки формы нг-Submit и кнопки вместо этикетки

CSS код

.ng-invalid { 
    'border', '1px solid #ff0000 !important' 
} 

HTML код

<form name="formName" ng-submit="update(formName);"> 

<input type="text" name="userLastName" value="" 
    ng-model="lastName" ng-class="txtlnmcolor" 
    placeholder="{{user_LastName}}" class="input-lastname" 
    required> 

<input type="text" name="pemail" 
    ng-model="umail" ng-class="mailerror" 
    placeholder="{{pemail}}" class="input-mail"> 

<input type="checkbox" name="userTermsConditions" value="true" class="checkbox-terms" ng-model="terms" ng-required="checked"> 

<button class="btn-submit" type="submit"></button> 
</form> 

кода контроллера

$scope.submit(form) { 
    if (form.$valid) { 
     // YOUR CODE 
    } 
} 

Надеюсь, это сработает. (извините за мой английский)

С уважением.

+0

Спасибо за подсказку. Я вынужден использовать ярлык и назначить ему событие sumbit, потому что в какой-то момент я также использую вызов Ajax - проверка электронной почты, если она существует в базе данных, или нет, и в зависимости от ответа я отправляю запрос с остальным данных - после проверки -. Итак, сначала я должен проверить, действительно ли пользователь заполнил обязательные поля, а затем я проверю письмо. Если я использую кнопку отправки, запрос отправляется без остановки процесса, даже если ответ Ajax: «false». P.S. Твой английский хороший. –

+0

, чтобы проверить, существует ли электронная почта с помощью ajax, вы можете использовать $ asyncValidators, и форма ждет, пока обещание не будет разрешено запускать обработчик отправки. – jcamelis

+0

Я не знал об этом .. отлично! –

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