input[type=number] 根据定义只接受整数作为输入。自己尝试一下。尝试输入字母,它不会让你。
不需要 JavaScript,因为它已经内置了。您的意思是 input[type=text] 吗?
您可以通过角度指令来实现。它看起来像这样(虽然不确定我的语法)
app.directive('onlyNumbers', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.bind("keydown", function(event) {
if ((event.keyCode > 47 && event.keyCode < 58) && !event.shiftKey) {
event.preventDefault();
return false;
}
});
}
});
语法可能有一些错误,但我会分解基本公式。
由于我们使用的是输入元素,因此我们使用attribute 指令是有意义的。我们可以通过将restrict 属性设置为 A 来做到这一点。
由于我们将监听按键事件,我们应该使用link 函数。我们想监听keydown 事件,以检测何时开始按下某个键。
要查找用户是否输入了数字,我们将使用keyCodes,其中的数字键是 48 到 57,分别代表 0 到 9。但是,我们没有考虑需要按数字键的特殊字符。所以我们要确保 shift 键也没有被按下。
然后我们可以将此指令作为属性添加到我们的输入元素上。
<input type="text" only-numbers />