我有一个简单的输入数字,如下所示:
<input type="number"/>
Run Code Online (Sandbox Code Playgroud)
当尝试输入除数字或字母"e"以外的任何内容时,它不起作用,但是当我键入字母"e"时它起作用.
我查看了w3.org规范,并清楚地说明浮动数字可以使用常规符号(例如10.2)或科学符号(例如:1e2)键入.
所以我的问题是:有没有办法阻止用户输入电子信件和点.换句话来说:有没有办法让输入数字只接受INTEGER NUMBERS?
我有一个Angular指令的想法,我将输入作为输入数字的属性,但我真的不知道如何使这项工作.
编辑:我想要做的是模拟我们现在尝试键入除"e"或"."以外的字母表中的任何其他字母时所具有的相同行为.我想说的是我不想看到输入中出现的字母(就像现在的情况一样).
你应该用指令完成它是正确的.只需创建一个指令并将其附加到input.该指令应该监听keypress和/或keydown事件.也可能粘贴事件.如果输入的字符是'e'或点 - 调用event.preventDefault();
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))
}
})
}
}
}Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5466 次 |
| 最近记录: |