【问题标题】:angular form validation issue- angular validation is not happening角度表单验证问题 - 角度验证没有发生
【发布时间】:2016-01-14 06:13:31
【问题描述】:

我的表格如下图所示。但是在单击提交按钮时,表单正在提交而没有经过验证......我正在使用弹簧安全性,所以 xhr 调用不允许从服务器重定向到另一个页面(所以我必须提供 url)。如果我删除“novalidate”页面将采用默认的 html 验证

<form name="loginForm" id="loginForm" action="${pageContext.request.contextPath}/j_spring_security_check" novalidate>
		<div class="panel-body">
			<div class="form-group has-feedback">
				<input type="email" name="j_username" ng-model="j_username"
					class="form-control placeholder-color" placeholder="Email"
					ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/"
					required autocomplete="off" />
				<div class="form-devider"></div>
				<div ng-messages="loginForm.j_username.$error"
					ng-if="loginForm.$submitted">
					<div class="has-error" ng-message="required">
						<spring:message code="peak.email.required" />
					</div>
					<div class="has-error" ng-message="pattern">
						<spring:message code="peak.enter.valid.email" />
					</div>
				</div>
			</div>
			<div class="form-group has-feedback">
				<input type="password" name="j_password" id="j_password"
					placeholder="Password" class="form-control placeholder-color"
					ng-model="j_password" required autocomplete="off" /> <%-- <input
					type="hidden" name="url" id="url" placeholder="Password"
					ng-model="link"
					ng-init="link='${pageContext.request.contextPath}/j_spring_security_check'" /> --%>
				<div class="form-devider"></div>
				<div ng-messages="loginForm.j_password.$error"
					ng-if="loginForm.$submitted">
					<div class="has-error" ng-message="required">
						<spring:message code="peak.password.required" />
					</div>
				</div>
			</div>
		</div>
		<div id="login-error-box1" style="display: none"></div>
		<button type="submit"
			class="btn btn-block custome-btn-orange pbi-mt15">
			<spring:message code="peak.login" />
		</button>
	</form>
提前致谢

【问题讨论】:

  • 你需要有一个 ng-submit 并阻止它发布你的表单,如果它是无效的。
  • 我的表单是指定的操作,那么我该如何使用 ng-submit?
  • 像这样:
    $scope.sendForm = (e) -> // 做事 e.preventDefault()
  • 查看我分享的链接的答案。

标签: angularjs


【解决方案1】:

看看这个 plnkr:http://plnkr.co/edit/rZaKXEp7vspvEerFtVH8?p=preview

$scope.validate = function(isValid,$event){
      console.log(isValid);
      console.log($scope.loginForm);
      if(!isValid){
        $event.preventDefault();
      }
    }

您需要创建一个 Angular 控制器,该控制器具有在 ng-submit 上运行的功能。该函数将查找表单是否无效并阻止它发布表单。 这使您可以查看错误消息。

【讨论】:

  • 感谢重播。我只想在单击提交按钮时查看错误消息。我像这样改变了 plunker,但什么也没有发生......plnkr.co/edit/kH9znu?p=preview
  • loginForm.$submitted 将始终为 false,因为您正在阻止该操作。而是在范围上声明一个名为 $scope.isSubmitted 的变量,并在控制器方法中将其设置为 true 以进行验证。在你的 ng-if 条件中使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
相关资源
最近更新 更多