使用angular验证表行中的输入

时间:2016-05-12 13:01:07

标签: javascript angularjs validation require

我使用this lib在页面上创建表格。

可以编辑此表格中的每一行。因此,如果启用了editMode,则会在行的每一列显示输入。其中一些输入是必需的。我想要显示红色文字"必需"或者只是红色边框,如果必填字段为空。 但是问题 - 当我使用表单时它很简单。但就我而言,我无法使用表格。

This answer对我没有好处,因为每一行都必须有唯一的表单名才能正确验证。

示例:https://jsfiddle.net/r8d1uq0L/147/

<div ng-repeat="user in users">
    <div name="myform-{{user.name}}" ng-form>
        <input type="text" ng-model='user.name' required name="field"/>
        <span class="error" ng-show="myform.field.$error.required">Too long!</span>
    </div>
</div>
<div>
    <button ng-click="add()">
        Add
    </button>
</div>

    var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.users = [{name:"1"}, {name:"2"}];
    $scope.add = function(){
    $scope.users.push({});
    }
});

1 个答案:

答案 0 :(得分:1)

无需创建动态表单名称,因为ng-repeat在浏览器上绘制模板时会在每次迭代时创建新的子范围。因此,只需将名称保留为name="innerForm",然后使用innerForm.field.$error.required对其进行验证。

<div ng-repeat="user in users">
    <div name="innerForm" ng-form>
        <input type="text" ng-model='user.name' required name="field"/>
        {{myform[$index]}}
        <span class="error" ng-show="innerForm.field.$error.required">Too long!</span>
    </div>
</div>

Forked Fiddle