<div ng-app="test-app">
<form action="" ng-controller="ctrlForm" name="myForm" ng-submit="submit()" novalidate>
<div class="title">Регистрационная форма</div>
<div class="wrap">
<div class="forInput">Имя: </div>
<input type="text" name='UserName' ng-model="user.name" ng-click="require.name = true" ng-pattern="" required>
<span ng-show="myForm.UserName.$error.pattern">Имя должно содержать только буквы кириллицы</span>
<span ng-show="myForm.UserName.$error.required && require.name">Поле должно быть заполнено!</span>
</div>
<div class="wrap">
<div class="forInput">Телефон: </div>
<input type="text" name='UserMobile' ng-pattern="/^\+380\d*$/" ng-click="require.phone = true" ng-model="user.phone" name="phone" required>
<span ng-show="myForm.UserMobile.$error.pattern ">Номер должен быть вида +380*********</span>
<span ng-show="myForm.UserMobile.$error.required && require.phone">Поле должно быть заполнено!</span>
</div>
<div class="wrap">
<div class="forInput">E-mail: </div>
<input type="email" name='UserEmail' ng-model="user.email" ng-click="require.email = true" ng-keyup="keyPress()" required>
<span ng-show="myForm.UserEmail.$error.email">Неправильный email!</span>
<span ng-show="myForm.UserEmail.$error.required && require.email">Поле должно быть заполнено!</span>
</div>
<div class="wrap">
<div class="forInput">Пароль: </div>
<input type="password" ng-model="user.password" ng-click="require.password = true" ng-minlength="6" name="password" required>
<span ng-show="myForm.password.$error.minlength">Минимальное число символов 6</span>
<span ng-show="myForm.password.$error.required && require.password">Поле должно быть заполнено!</span>
</div>
<div class="wrap">
<div class="forInput">Повторите пароль: </div>
<input type="password" name = "password2" ng-click="require.password2 = true" ng-model="password2" required>
<span ng-show="user.password!==passw2 && password2.length">Пароли не совпадают</span>
<span ng-show="myForm.password2.$error.require && require.password2">Поле должно быть заполнено!</span>
<br>
</div>
<input type="submit" ng-disabled="!myForm.$valid " value="Отправить">
</form>
</div>
var app = angular.module('test-app', []);
app.controller('ctrlForm',function($scope, $http) {
$scope.user = {};
$scope.keyPress = function(){
//Когда пытаюсь получить значение user.email выводит undefined
//Ajax запрос с проверкой, есть ли такой email
$http.post('/someUrl', {data: $scope.user.email}).
success(function(data, status, headers, config) {
});
}
$scope.submit = function() {
//Ajax запрос где передастся массив данными из формы
$http.post('/someUrl', {data: user}).
success(function(data, status, headers, config) {
});
}
});
Подскажите пожалуйста как исправить следующие проблемы:
1) Как сделать чтобы изначально не писало, что поле нужно заполнить , в интернете в примерах там обходились без этого и всё работало, почему так?(пока что просто сделал через переменные, которые становились true при нажатие на поле, но я думаю можно без этого обойтись).
2) При отправки формы страница перезагружается, в документации сказано
"Привязывает angular-выражение к событию onsubmit (отправка формы).
Дополнительно отключает поведение по умолчанию (отправка формы на сервер и перезагрузка текущей страницы)." Но у меня по умолчанию поведение не отключается, как в ангуляре отключается действие по умолчанию?
3)При вводе email я отсылаю запрос через аякс, чтобы проверить наличие email в базе данных, но в функцие у меня undefined в переменной user.email.
4)Если в ng-model применяю не user.name, а везде обращений как к массиву user[name], то при вводе все поля начинаются заполнятся.