У меня есть многоступенчатая форма с 5 шагами. Я хотел бы, чтобы пользователь мог использовать клавишу ввода для отправки каждой из подформ, чтобы вызвать проверку и перейти к следующей подформе в случае успеха. Я не могу найти способ сделать это. Я подумал, возможно, я мог бы добавить события ng-keydown
к каждой из подформ (или настраиваемую директиву, привязку к onkeydown
) и следить за клавишей ввода keyCode
.
Есть ли у кого-нибудь опыт работы с этим в Angular? Как бы вы добавили эту функцию?
Вот краткий HTML-образец подформ. Предположим, что кнопка «Следующий шаг» запускает $scope.nextStep()
в контроллере angular и впоследствии выполняет проверку, чтобы определить, может ли пользователь перейти к следующему шагу или отображается ошибка проверки.
<form>
<div ng-form="step1"></div>
<div ng-form="step2"></div>
<div ng-form="step3"></div>
<div ng-form="step4"></div>
<div ng-form="step5"></div>
<button type="button" class="btn" ng-click="nextStep()">Next Step</button>
</form>
Для тех, кто читает и ищет дополнительную информацию об ответе
Я отслеживаю шаг формы внутри файла $scope.current_step
моего контроллера. Используя это, я могу использовать $scope[$scope.current_step]
для ссылки на текущую форму. С принятым ответом @Vova ниже я бы сделал что-то похожее на следующее:
$scope.myFunc = function(event) {
if (!$scope.isFormValid()) {
return false;
}
// trigger next step (which handles it's own validation)
$scope.nextStep();
};
$scope.isFormValid = function() {
// check if the current form is invalid
if ($scope[$scope.current_step].$pristine
|| $scope[$scope.current_step].$invalid
) {
return false;
}
return true;
};