我有一个输入字段只接受数字,但这只适用于chrome。当我在IE11中尝试相同的输入字段时,它接受所有类型的输入。
<input type="number"/>
我也试过没有胜利。
<input type="text" pattern="[0-9]*"/>
有什么解决方法吗? IE11肯定是神奇的东西。
解决了自己:
添加
<input type="text" (keypress)="isNumberKey($event)"/>
然后在我的组件中:
isNumberKey($event) {
let charCode = ($event.which) ? $event.which : $event.keyCode;
console.log('Char code is ---> ', charCode);
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
我通过创建一个允许特定字符限制和数字的指令解决了类似的问题。
appName.directive("limitTo", [function() {
return {
restrict: "A",
link: function(scope, elem, attrs) {
var limit = parseInt(attrs.limitTo);
angular.element(elem).on("keypress", function(e) {
if (this.value.length == limit) {
if(e.which != 8){
e.preventDefault();
}
}
if((isNaN(String.fromCharCode(e.charCode)) || e.charCode === 32 || e.charCode === 69) && e.which != 8){
e.preventDefault();
}
});
}
}
这将允许您限制任何非数字(包括空格,'e'和短划线)。只需添加带有字符限制的指令'limit-to'或根本不添加。
<input type="number" limit-to="4">
希望这会有所帮助,对于今年的迟到回复感到抱歉干杯!
你的第二个例子非常接近。这样可以解决问题:
<input type="text" pattern="^[0-9]*$"/>