我在表单上有三个输入字段。 我正在寻找一种方式,如果需要任何一个或任何组合的输入,表格是有效的,这意味着至少有一个是必要的。也可以用任何组合输入输入,即使这样,表格也是有效的。
我已阅读ng-required但这会让我的表达时间过长。
<td>Name</td>
<td><input type="text" class="form-control input-xs" name="name"
ng-model="ctrl.orderSearch.name" minlength="4">
</td>
<td>Class</td>
<td><input type="text" class="form-control input-xs" name="class"
ng-model="ctrl.orderSearch.Class" minlength="6">
</td>
<td>Roll No:</td>
<td><input type="text" class="form-control input-xs" name="rollNo"
ng-model="ctrl.orderSearch.RollNo" minlength="6">
</td>
更新:我不想要提交提交按钮。该表单在以下任一情况下均有效:
1)填写第一或第二或第三栏
2)填充1,2或1,3或2,3
3)1,2,3被填满。
另外,我试图使用: ng-required =&#34;!(ctrl.orderSearch.name.length || ctrl.orderSearch.rollNo.length)&#34;在田野上。但是当我提交我的表格时,在我的名字字段中会显示一个内置的棱角分明弹出来说&#34;请填写此必填字段&#34;因为无论什么形式。$ valid在空表单上调用,首先检查字段1,因此弹出将显示在该字段上。但对于用户来说,似乎第一场是强制性的,但事实并非如此。
另外,我不想编写自定义方法进行验证。是否可以使用ng-required?请帮忙。
答案 0 :(得分:4)
选中此link
HTML
<form name="myForm">
<input type="text" ng-model="fields.one" name="firstField" ng-required="!(fields.one.length || fields.two.length || fields.three.length)" />
<br/>
<input type="text" name="secondField" ng-required="!(fields.one.length || fields.two.length || fields.three.length)" ng-model="fields.two" />
<br/>
<input type="text" ng-model="fields.three" name="thirdField" ng-required="!(fields.one.length || fields.two.length || fields.three.length)" />
<br/>
<button type="submit" ng-disabled="!myForm.$valid">Submit</button>
<br/>
<div>
<p>Submitted ? <span ng-bind="fields.submitted"></span>
</p>
<p>Form $valid: <span ng-bind="myForm.$valid"></span>
</p>
</div>
</form>
的js
angular.module("myApp", [])
.controller('myCtrl', ['$scope', function ($scope) {
$scope.fields = {
one: '',
two: '',
three: '',
submitted: 'Not Yet'
};
$scope.submit = function () {
$scope.fields.submitted = "Yahooo";
}
}]);
答案 1 :(得分:1)
您可以创建一个$scope
变量来执行“需要检查的任一或所有字段”。当表单有效或无效时,$scope
变量将成为您的标志。
例如:
的控制器强>
function SampleController(){
$scope.isValidForm = function(){
//do the checking here.
//return true or false
}
}
查看强>:
<button ng-disabled="!isValidForm()">Submit</button>
答案 2 :(得分:0)
我已编辑您的代码检查您的代码...查看小提琴链接Fiddle 希望这能帮助您理解验证。
<div ng-app ng-controller="myCtrl">
<table ng-form="checkForm">
<tr>
<td>Name</td>
<td>
<input type="text" class="form-control input-xs" required name="name"
ng-model="ctrl.orderSearch.name" minlength="4" >
</td>
<td>
<div ng-show="checkForm.name.$invalid">
name error
</div>
</td>
</tr>
<tr>
<td>Class</td>
<td>
<input type="text" class="form-control input-xs" required name="class"
ng-model="ctrl.orderSearch.Class" minlength="6" >
</td>
<td>
<div ng-show="checkForm.class.$invalid">
class error
</div>
</td>
</tr>
<tr>
<td>Roll No:</td>
<td>
<input type="text" class="form-control input-xs" required name="rollNo"
ng-model="ctrl.orderSearch.RollNo" minlength="6" >
</td>
<td>
<div ng-show="checkForm.rollNo.$invalid">
Roll no error
</div>
</td>
</tr>
<tr>
<td colspan="3" style="font-weight:bold; color:green">
<span ng-show="checkForm.name.$valid || checkForm.class.$valid || checkForm.rollNo.$valid">Valid Form</span>
</td>
</tr>
</table>
</div>
答案 3 :(得分:0)
下面是它将在表单提交事件中验证的代码。它将在您提交表单时受到限制,并且您的表单中的所有字段为空。
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script>
angular.module('myApp', []).controller('myCtrl', function($scope) {
$scope.isOneFieldRequired = function (name,uclass,rollNo) {
return !(name|| uclass|| rollNo);
};
});
</script>
<div ng-app="myApp" ng-controller="myCtrl">
<form name="myForm">
<input type="text" ng-model="name" name="name" ng-required="isOneFieldRequired(name,uclass,rollNo)" />
<br/>
<input type="text" ng-model="uclass" name="uclass" ng-required="isOneFieldRequired(name,uclass,rollNo)" />
<br/>
<input type="text" ng-model="rollNo" name="rollNo" ng-required="isOneFieldRequired(name,uclass,rollNo)" />
<br/>
<button type="submit"> Submit</button>
</form>
</div>
</body>
</html>