【问题标题】:Validate inputs in table row with angular使用角度验证表格行中的输入
【发布时间】:2016-09-08 08:03:05
【问题描述】:

我使用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({});
    }
});

【问题讨论】:

    标签: javascript angularjs validation require


    【解决方案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

    【讨论】:

    • 一个问题:如果我有table 而不是div,我可以将行的每个单元格设置为如下形式:&lt;td class="user-name" ng-form name="userNameForm"&gt;...&lt;/td&gt; &lt;td class="email" ng-form name="userEmailForm"&gt;...&lt;/td&gt;?好办法吗?
    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多