这是我的html:
<input type="text" ng-trim="false" ng-change="onPOChange()"
ng-model="PONumber" name="PONumber" id="PONumber"/>
这是我的回调函数:
$scope.purgeFilter = function (input) {
var output = input.replace(/[^\w]/gi, "");
console.log(input + ' --> ' + output);
return output;
}
$scope.onPOChange = function () {
$('#PONumber').val($scope.purgeFilter($('#PONumber').val()));
};
我的目标是在用户输入时从输入框中过滤掉所有非字母数字键。
问题是,如果用户键入“!!”,则只有第一个“!”触发过滤功能,第二个“!”不会触发ng-change。
我认为这是因为,第一个事件是对输入的更改,然后由回调更正,但第二个“!”不被解释为实际的变化。
如果我输入“1234”然后“!”,则输入“1234!”被过滤为“1234”。然后当我输入“!”再次,它不被认为是一个变化,因为“1234!”是输入的最后一个输入。
我是Angular的初学者,仍处于复制粘贴级别。
答案 0 :(得分:2)
您可以使用ng-change本身尝试以下代码,也可以使用您给定的工作示例检查此plunker。
模板:
<input type="text" ng-trim="false" ng-change="onPOChange(PONumber)" ng-model="PONumber" name="PONumber" id="PONumber"/>
控制器:
$scope.onPOChange = function (PONumber) {
$scope.PONumber = $scope.purgeFilter(PONumber);
};