我在AngularJS中使用ngChange来触发自定义函数,该函数将删除用户添加到输入中的所有字母。
<input type="text" name="inputName" data-ng-change="numbersOnly()"/>
问题是我需要定位触发的输入,numbersOnly()以便删除输入的字母。我已经在Google上寻找了很长时间,并且对此一无所获。
numbersOnly()
我能做什么?
简单的方法 ,如果适用于您的用例,请使用type =“ number”:
<input type="number" ng-model="myText" name="inputName">
另一种简单的方法: ng- pattern也可用于定义正则表达式,以限制字段中允许的内容。另请参阅有关表单的“食谱”页面。
骇人听闻的? 方式,$ watch您的控制器中的ng模型:
<input type="text" ng-model="myText" name="inputName">
控制器:
$scope.$watch('myText', function() { // put numbersOnly() logic here, e.g.: if ($scope.myText ... regex to look for ... ) { // strip out the non-numbers } })
最好的方法是 ,在指令中使用$ parser。我不会重复@pkozlowski.opensource提供的已经很好的答案,
以上所有解决方案都涉及使用ng-model,这使查找this不必要。
this
使用ng-change会引起问题。请参阅AngularJS-重置$scope.value不会更改模板中的值(随机行为)