2017-08-16 66 views
5

我有一些表单的字段。
我确认与CSS类的字段:(如果该字段是无效的,用户接触它,然后输入的边框颜色=红色。)获取表单角度的字段

select.ng-invalid.ng-touched, 
input.ng-invalid.ng-touched,textarea.ng-invalid.ng-touched { 
    border-color: red; 
} 

如果用户提交表单没有填充一个或更多的领域,会有一个危险的警报。

HTML:

<div ng-show="formInvalid> 
     error! 
    </div> 

JS:

if ($scope.pniyaForm.$valid) { 
    $scope.formInvalid = false; 
     ..... 
} else { 
    $scope.formInvalid = true; 
} 

但是,如果用户提交表单,并没有触及任何领域中,CSS类不影响(因为用户没有碰...)
我想在代码中添加类。
有没有人有一个优雅的方式来做到这一点,而不分开写在每个领域的想法?

回答

1

在angularjs

<div class="form-group"> 
    <label>Name</label> 
    <input type="text" required ng-model="name" name="name" ng-class="{'has-error': myForm.name.$invalid}" /> 
</div> 

<div class="form-group"> 
    <label>Age</label> 
    <input type="text" required ng-model="age" name="age" ng-class="{'has-error': myForm.age.$invalid}" /> 
</div> 
+0

它不为我工作,我是否需要添加其他内容/关注一些重要的细节? – Tzof

1

使用纳克级验证一个可能的解决方案:当你执行你的表格功能

,添加以下行到它。

$scope.$apply(function() {}); 

此行将导致ng $ scope。$ watch()运行并应用更改(如果存在)。 可能工作,可能无法正常工作,请阅读以下链接以深入了解问题。

http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

0

如果用户提交表单,并没有触及任何领域中,CSS类不影响

您需要提供一个初始定义值的ngModel并至少将required属性提供给输入。

使用ngClass有条件地应用CSS类的情况下,某种形式的部分是无效的

<form name="myform"> 
    <div class="form-group" ng-class="{'has-error': myform.myinput.$invalid}"> 
     <input name="myinput" ng-model="myName" class="...." required> 
    </div> 
.... 
</form> 

.... 
// in controller 
$scope.myName = "cats"; // form is valid 
$scope.myName = "";  // form is invalid, and the css class 'has-error' will be applied 

然后使用ngDisables在你的提交按钮,以防止万一提交表单无效

<button type="submit" ng-disabled="myform.$invalid">submit</button>