Я создаю пользовательские поля формы. Я пытаюсь выбросить ошибку, когда пользователь нажимает кнопку submit
в поле username
.
но по некоторым причинам он не работает. вот мое поле username
:
<form name="myform" ng-submit="formSubmit()" novalidate>
<input ng-model="fields.name.title"
placeholder="Enter your name" name="username" type="text" required>
<span ng-show="myform.username.$error.required && !myform.username.$pristine">Invalid name</span>
<drop-down data="fields.levels" func='levelHandler'></drop-down>
<drop-down data="fields.stages" func='levelHandler'></drop-down>
<drop-down data="fields.colors" func='levelHandler'></drop-down>
<button type="submit">Submit Form</button>
</form>
кто-нибудь мне помогает?
Это связано с тем, что ваше $pristine
свойство истинно, если вы не введете что-то в форму (сделайте это грязным).
Попробуйте вместо этого проверить $submitted
.
<span ng-show="myform.username.$error.required && myform.$submitted">Invalid name</span>
Измените! Myform.username. $ Pristine с myform. $, Представленный в вашем атрибуте ng-show
Полный код должен выглядеть так:
<form name="myform" ng-submit="formSubmit()" novalidate>
<input ng-model="fields.name.title"
placeholder="Enter your name" name="username" type="text" required>
<span ng-show="myform.username.$error.required && myform.$submitted">Invalid name</span>
<drop-down data="fields.levels" func='levelHandler'></drop-down>
<drop-down data="fields.stages" func='levelHandler'></drop-down>
<drop-down data="fields.colors" func='levelHandler'></drop-down>
<button type="submit">Submit Form</button>
</form>
$pristine
). Поэтому он показывает, когда вы вводите значение, а затем полностью его удаляете, и ни в каком другом случае. Это то, что вы ожидали?