我无法将输入类型编号限制为正数。正如帖子中所述:HTML5: number input type that takes only integers?我不正在寻找step =“1”的答案,因为它允许用户输入{e。,}。
我正在使用我在相关帖子(How do I restrict an input to only accept numbers?)上找到的指令,我刚刚添加了一些控制台日志和一个toString():
当输入类型是文本时它工作正常,但是当输入类型是数字并且我键入“e”,“或”时,它从不被调用。
对于我在这里失踪的任何想法?我想使用input type = number来使箭头能够使用角度材料选择一个值。
function restrictInput($mdDialog) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ctrl) {
function inputValue(value) {
console.log("hello ! :", value)
var val = value.toString();
console.log("goodbye ! : ", val)
if (val) {
var digits = val.replace(/[^0-9]/g, '');
console.log("digits :", digits)
console.log("val : ", val)
if (digits !== val) {
ctrl.$setViewValue(digits);
ctrl.$render();
}
return parseInt(digits, 10);
}
return undefined;
}
ctrl.$parsers.push(inputValue);
}
};
}
Html是这样的:
<md-input-container flex class="md-input-has-placeholder">
<label>Années d'expérience stage inclus</label>
<input
type="number"
required
step="1"
restrict-input
min="0"
name="Expérience stage"
ng-model="model">
<div ng-messages="form['Expérience stage'].$error" md-auto-hide="false">
<div ng-message="required">Requis</div>
</div>
</md-input-container>
修改
使用getter setter(ng-model-options =“{getterSetter:true}”)在这里完美地完成了。
答案 0 :(得分:2)
如果只需要限制输入类型“number”以仅接受整数,则不需要使用指令。
<input type="number" ng-pattern="/^(0|[1-9][0-9]*)$/" >
您可以在应用中输入以上代码吗?
这只接受数字。