我有下一个问题,我在Angular JS中创建了一个指令来检查输入是否是一个数字,如果不是数字,则必须设置正确的值。这是我的指令代码:
app.directive('numberValidate', function(){
return {
require: 'ngModel',
link: function($scope, element, attr, modelCtrl){
modelCtrl.$parsers.push(function (inputValue){
var transformedInput = parseInt(inputValue);
if (transformedInput!=inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
};
});
另外,当用户停止使用typping发送请求时,我需要监听。要在停止时收听,我已将ng-model-options="{debounce: 750}"
添加到字段中,就像在下一个代码中一样:
<input type="text" ng-change="sendChecker()" ng-model="identification" ng-model-options="{debounce: 750}" number-validate>
sendChecker
函数将我的请求发送到服务器,一切正常工作当我写一个像12345
这样的数字或者我输入一个带有字符12345a
的数字时,它被转换为数字和设置在输入中,问题是当我写一个字母a
时,这会创建一个循环。我怎么能避免这个?
任何建议都会被贬低。
答案 0 :(得分:2)
为什么不使用ng-pattern
验证输入?
<input type="text" ng-pattern=/^[0-9]+$/ ng-model="identification" ng-model-options="{debounce: 750}">
或者您可以使用输入类型number
<input type="number" ng-model="identification" ng-model-options="{debounce: 750}">
那么你不必自己验证一些东西吗?
修改强>
在以下示例中,仅在用户插入有效值
时才调用sendChecker()
<form name="myform">
<input type="number" name="myinput" ng-changed="myform.myinput.$valid ? sendChecker(identification) : " ng-model="identification" ng-model-options="{debounce: 750}">
</form>
答案 1 :(得分:0)
因为operator->()
你进入循环。所以你需要过滤掉字符串中的非数字。