我想只得到正的值,有什么方法来防止它只使用html 请不要建议验证方法
当前回答
@Manwal的回答很好,但我喜欢少写几行代码的代码,这样可读性更好。另外,我喜欢在html中使用onclick/onkeypress的用法。
我建议的解决方案也是如此: 添加
min="0" onkeypress="return isNumberKey(event)"
到HTML输入和
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : event.keyCode;
return !(charCode > 31 && (charCode < 48 || charCode > 57));
}
作为一个javascript函数。
如前所述,它做的是一样的。这只是个人对如何解决问题的偏好。
其他回答
像这样使用min属性:
<input type="number" min="0">
简单的方法:
<input min='0' type=“number” onkeypress=“return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57”>
我对@Abhrabm的回答不满意,因为:
它只是阻止负数输入 向上/向下箭头,而用户可以输入负数从键盘。
解决方法是防止用键码:
//选择输入元素。 var number = document.getElementById('number'); //在numInput上监听输入事件 号码。Onkeydown =函数(e) { 如果(! ((e。> 95 && e.keyCode < 106) || (e.keyCode > 47 && e.keyCode < 58) || e.keyCode == 8)) { 返回错误; } } <form action="" method="post"> <input type="number" id="number" min="0" /> <input type="submit" value="点击我!"/> > < /形式
由@Hugh Guiney提供的澄清:
正在检查哪些关键代码:
95, < 106对应Numpad 0到9; 47, < 58对应数字行上的0到9;8是 退格键。
所以这个脚本是防止在输入中输入无效的键。
下面是一个角度上的解决方案:
创建一个类OnlyNumber
import {Directive, ElementRef, HostListener} from '@angular/core';
@Directive({
selector: '[OnlyNumber]'
})
export class OnlyNumber {
// Allow decimal numbers. The \. is only allowed once to occur
private regex: RegExp = new RegExp(/^[0-9]+(\.[0-9]*){0,1}$/g);
// Allow key codes for special events. Reflect :
// Backspace, tab, end, home
private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home'];
constructor(private el: ElementRef) {
}
@HostListener('keydown', ['$event'])
onKeyDown(event: KeyboardEvent) {
// Allow Backspace, tab, end, and home keys
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
// Do not use event.keycode this is deprecated.
// See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
let current: string = this.el.nativeElement.value;
// We need this because the current value on the DOM element
// is not yet updated with the value from this event
let next: string = current.concat(event.key);
if (next && !String(next).match(this.regex)) {
event.preventDefault();
}
}
}
将OnlyNumber添加到app.module.ts中的声明中,并像这样在应用程序的任何地方使用它
<input OnlyNumber="true">
如果数字是负数或正使用ES6的数学。标志 Const num = -8; // Old Way Num === 0 ?Num: (Num > 0 ?1: -1);/ / 1 // ES6方式 Math.sign (num);/ / 1
推荐文章
- 给一个数字加上st, nd, rd和th(序数)后缀
- 为什么我的CSS3媒体查询不能在移动设备上工作?
- 用javascript检查输入字符串中是否包含数字
- 下一个元素的CSS选择器语法是什么?
- 我如何用CSS跨浏览器绘制垂直文本?
- 如何获得box-shadow在左侧和右侧
- 相对定位一个元素,而不占用文档流中的空间
- 从数字中移除无关紧要的尾随零?
- 如何在jQuery检索复选框值
- 禁用身体滚动
- 如何在删除前显示确认消息?
- 在一个CSS宽度的小数点后的位置是尊重?
- 检测输入是否有文本在它使用CSS -在一个页面上,我正在访问和不控制?
- 如何用jQuery清空输入字段
- 我怎么能选择一个特定的类的最后一个元素,而不是父里面的最后一个孩子?