【问题标题】:oninput not working in Angular. Alternative?oninput 在 Angular 中不起作用。选择?
【发布时间】:2016-04-11 20:16:05
【问题描述】:

我试图创建一个读取输入值并触发一系列真/假的函数,但是下面的代码不断返回“未定义 passStrength”。 据我所知,Angular 不支持 oninput。如何在 Angular 中实现这一点?

在我的控制器中:

$scope.passStrength = function(input) {
    if (input.value.toLowerCase().indexOf(/[a-z]/) > -1) {
        $scope.lwrChar = true;
        console.log('lower ' + $scope.lwrChar);
    } else if (input.value.toUpperCase().indexOf(/[A-Z]/) > -1) {
        $scope.uprChar = true;
        console.log('upper ' + $scope.uprChar);
    } else if (input.value.indexOf() == !isNaN(n)) {
        $scope.nbrChar = true;
        console.log('number ' + $scope.nbrChar);
    } else if (input.value.length >= 8) {
        $scope.countChar = true;
        console.log('count ' + $scope.countChar);
    }
};

在我的标记中:

<input id="password" oninput="passStrength()" />

【问题讨论】:

标签: angularjs angularjs-ng-change


【解决方案1】:

要在输入更改时触发事件,请使用 ng-change。此外,您必须定义一个 ng-model。

<input ng-model="password" ng-change="passStrength(password)" />

编辑: 创建了一个plunker 演示它

【讨论】:

  • 谢谢,但是我如何在控制器中引用模型?用 $scope.password 替换输入并不能解决问题。我从输入函数中得到一个未定义的错误。
  • 看看这个Plunker
  • 谢谢!我走了一条略有不同但基本相同的道路!
  • 也许值得一提的是,ng-change 不会在模型更改时评估表达式,而是在用户使用输入字段更改时。
  • onchangeoninput 不一样,因为 onchange 仅在字段失去焦点时触发。虽然这个答案可能会解决 OP 的问题,但它实际上并没有回答他的问题。
猜你喜欢
  • 2018-08-14
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 2014-11-13
  • 2020-06-09
相关资源
最近更新 更多