javascript - 使用 angular.js 控制重复条目

标签 javascript jquery angularjs duplicates

我正在使用 angular.js 从某些输入字段获取一些表单数据。我需要构建一个功能来防止用户输入重复的字段。因此,如果用户输入重复的字段,我需要使用警报框提醒用户,然后删除重复的字段。我知道如何使用 jQuery 来做到这一点,请看下面的代码。使用 angular.js 实现此目的最有效的方法是什么?非常感谢任何帮助,我有模板 fiddle here让事情变得更容易。

/** Handle Duplicate Barcodes **/
  $(".alldifferent").on('keyup paste',function(){
    var $this = $(this);
    keyupDelay(function() {
      var val = $this.val();
      $this.attr('value', val);
      if (val != '') {
        var $dupes = $('input[value="' + val + '"]:gt(0)').val('');
        if ($dupes.length > 0) alert('Error: Duplicates barcodes are not allowed!');
      }
    }, 300);
  });

  var keyupDelay = (function() {
    var timer = 0;
    return function(callback, ms) {
      clearTimeout(timer);
      timer = setTimeout(callback, ms);
    };
  })();

最佳答案

尝试ng-blur,因为当元素失去焦点时会触发模糊事件。

如果您知道输入重复条目的索引,则可以过滤数组中的该项目并将其清除。

$scope.check = function(val, index){
  if(val !== '') {
    for(var i = 0; i < $scope.num.length; i++ ){
       var itm = $scope.num[i].text;
       if(itm == val && i != index) {
         $scope.num[index].text = '';
         alert('Error: Duplicates barcodes are not allowed!');
         break;
       }
    }
  }
}

Working Plunker

关于javascript - 使用 angular.js 控制重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150894/

相关文章:

javascript - JavaScript setTimeout 解析问题

javascript - 进度条在文件上传中未更新其宽度

javascript - 我可以跳过正常语法并在 Three.js 中使用几何缓冲区以获得更快的性能吗?

jquery - 在 css 中分层编号嵌套订单列表?

javascript - jquery 验证插件 if 语句

javascript - 如何在多个操作之间共享对象的单个实例?

jquery - $.animate 与 $.fadeIn 的平滑度

javascript - 如何使 AngularJS 路由像 index.html#/myPage 一样与 index.html/#/myPage 一起工作

AngularJS:访问指令的范围与父 Controller 隔离

javascript - 在 AngularJS 中重复完成的火灾事件