javascript - 重复模式 Angular JS 中需要的数字文本框验证

标签 javascript jquery angularjs

请引用以下链接

https://plnkr.co/edit/9HbLMBUw0Q6mj7oyCahP?p=preview

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
 $scope.NDCarray = [{val: ''}];

$scope.NDCadd = function() {
    $scope.NDCarray.unshift(
        {val: ''}
    );
};
$scope.data = angular.copy($scope.NDCarray);
$scope.NDCcancel=function(){debugger
  $scope.NDCarray=$scope.data;
}


$scope.NDCdelete = function(index) {
  if(index != $scope.NDCarray.length -1){
    $scope.NDCarray.splice(index, 1);
  }
};
});

它包含带有添加按钮的文本框。我已经添加了对数字和必填字段的验证,它工作正常。但是当我单击添加按钮时,它将创建另一个带有输入值的文本框,此时它显示所有文本框的验证消息,我不想显示所有文本框的验证消息。只需要显示相应文本框的验证。这意味着当我在第二个文本框中输入错误的内容时,它仅向该文本框显示消息。请参阅下面的屏幕截图。

enter image description here

为所有文本框显示验证消息。该消息应仅为一个文本框显示。

最佳答案

工作plnkr:https://plnkr.co/edit/f4kAdZSIsxWECd0i8LDT?p=preview

您的问题出在 HTML 中,要获得独立的字段,您必须:

  • 移出 ng-repeat 的形式
  • 在字段上使用 $index 提供动态名称,因为名称使每个字段独立于验证。

这是来自 plnkr 的最终 HTML,我根本没有接触过 javascript:

<body ng-controller="MainCtrl">
     <form name="myForm">
    <div ng-repeat ="ndc in NDCarray">
    <div class="col-sm-4 type7" style="font-size:14px;">
        <div style="margin-bottom:5px;">NDC9</div>

  <label>Number:
    <input type="number"  ng-model="ndc.value"
           min="0" max="99" name="{{'input_'+$index}}" required>
 </label>
  <div role="alert">
    <span class="error" ng-show="myForm.input.$dirty && myForm.input.$error.required">
      Required!</span>
    <span class="error" ng-show="myForm.input.$error.number">
      Not valid number!</span>
  </div>
  <tt>value = {{example.value}}</tt><br/>
  <tt>myForm['input_{{$index}}'].$valid = {{myForm['input_'+$index].$valid}}</tt><br/>
  <tt>myForm['input_{{$index}}'].$error = {{myForm['input_'+$index].$error}}</tt><br/>

    </div>
    <div class="col-sm-4 type7 " style="font-size:14px;">
        <div style="padding-top:20px; display:block"> 
            <span class="red" id="delete" ng-class="{'disabled' : 'true'}" ng-click="NDCdelete($index)">Delete</span> &nbsp; 
            <span>Cancel </span> &nbsp;  
            <span id="addRow" style="cursor:pointer" ng-click="NDCadd()">Add </span>
        </div>
    </div>
  </div>
  <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
  <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>

   </form>
  </body>

关于javascript - 重复模式 Angular JS 中需要的数字文本框验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37411922/

相关文章:

asp.net - 删除 Umbraco 的通知并显示我自己的通知

javascript - 不再悬停时取消悬停 Action ?

javascript - 如何在 couchDB 中添加 cors——请求的资源上不存在 'Access-Control-Allow-Origin' header

javascript - 有没有什么工具可以让缩小后的js正常显示?

jquery - 使用 jquery 获取表单操作/url

Javascript/JQuery 冲突

javascript - 如何在数组中设置我的对象?

angularjs - 如何绑定(bind)指令范围的深层子属性?

javascript - 如何在最后以及发布/触发/继续提交之后暂停表单提交,进行最后一次验证?

javascript - 为什么这个 Angular 模型没有被完全覆盖?