我使用了input[type=number]
。在chrome中,这个输入会忽略任何类型的char(例外e - 就像在w3c规范中一样)。但是在Firefox中你可以编写任何字符,一切都很好。
我写了指令:
link: function (scope, element, attr, ngModelCtrl) {
console.log('enter')
function fromUser(text) {
console.log(typeof text, typeof text === 'string')
if (typeof text === 'string' && text) {
var transformedInput = text.replace(/[^0-9]/g, '');
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
ngModelCtrl.$parsers.push(fromUser);
}
但它在Firefox 52.7.3(64位)中不起作用。我在console.log中没有得到任何符号。 接下来,我将$ parsers命令更改为:
ngModelCtrl.$parsers.unshift(fromUser);
我在console.log中有符号,但在输出中没有帮助。 接下来,我可以添加处理程序(在示例中 - 仅为'e'符号演示):
onkeydown="javascript: return event.keyCode == 69 ? false : true"
但是有很多领域,我认为这是一个糟糕的解决方案。
现在,我用input[type=text]
重写所有内容。但我想使用input[type=number]
。有人可以帮忙吗?