我有一个简单的输入数字,例如:
<input type="number"/>
尝试输入数字或字母“ e”以外的任何内容时,它不起作用,但是当我输入字母“ e”时,它起作用。
我检查了w3.org规范,它清楚地表明可以使用常规表示法(例如:10.2)或科学表示法(例如:1e2)来键入浮点数。
所以我的问题是:有没有一种方法可以防止用户键入e字母和点。用另一种方式说:有没有一种方法可以使输入数字 只 接受 整数 ?
我有一个用Angular指令执行此操作的想法,我将输入该属性作为输入数字的属性,但是我真的不知道如何使它工作。
编辑 :我想做的是模拟当我们尝试在字母中键入除“ e”或“。”以外的任何其他字母时所具有的相同 行为 。我想说的是,我不想看到字母出现在输入中(就像现在这样)。
您应该使用指令来完成它是正确的。只需创建一个指令并将其附加到即可input。该指令应侦听keypress和/或keydown发生事件。可能还粘贴事件。如果输入的字符是’e’或点- 调用event.preventDefault();
input
keypress
keydown
angular.module('app', []) .directive('yrInteger', yrInteger); function yrInteger() { return { restrict: 'A', link: function(scope, element, attrs) { element.on('keypress', function(event) { if ( !isIntegerChar() ) event.preventDefault(); function isIntegerChar() { return /[0-9]|-/.test( String.fromCharCode(event.which)) } }) } } } <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="app"> <input type="number" yr-integer /> </div>