根据MDN,我们绝对不应该使用.keyCode属性.它已被弃用:
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
在W3学校,这个事实被淡化了,并且只有一个附注说明仅.keyCode提供兼容性,并且最新版本的DOM事件规范建议使用该.key属性.
问题是.key浏览器不支持,那么我们应该使用什么?有什么我想念的吗?
是否可以实现一个input允许只在内部键入数字而无需手动处理event.target.value?
在React中,可以定义value属性,然后输入更改将基本上绑定到该值(无法在不value更改的情况下修改它).见例子.它没有任何努力就可以正常工作.
在Angular 2中,可以定义[value],但它只是初始设置值,然后input不会阻止修改.
我正在玩,ngModel并[value] / (input)看到例子.
但在这两个实现中都存在一个基本问题:
如何做到这一点(从第一眼看)组件,无需手动处理event.target.value?...
更新我不是在寻找原生HTML5 input[number]元素.这里输入的数字仅用于示例 - 当我需要限制输入文本时,可能会有更多任务.
此外,input[number]1)不限制我打字10ddd和2)(不太重要)包含我不需要的箭头.
这里的问题是阻止用户输入超出限制值的内容,而不是允许输入任何内容并在之后验证它
在Angular2项目中,我需要验证一些输入.如何轻松检查输入值是否为整数?
我尝试使用 Number(control.value)哪个返回0空字段 - 不好.
或者parseInt(control.value,10)不考虑空格:
如果我有类似的东西:1空格0,24 = 1 ,024它返回1 - 它通过验证器没有错误.
Lodash的功能如下:_.isInteger(control.value)或者_.isNumeric(control.value)
// return false every time- 是预期的,因为输入值是字符串而不是数字.
组合这样的方法会产生一个带有许多if/else语句的混乱函数,即便如此,我也不确定我是否得到了所有边缘情况.我当然需要更直接的方法.有任何想法吗?
我在表单上输入数字时遇到问题.当我输入一个数字,例如88.2并提交它时,没有问题.但是当这个其他人做同样的事情时,你可以在php代码中看到如果你从数字输入中回显变量,它已经删除了小数点(.).
当他使用逗号时它不会删除他的小数点,但是当我使用逗号时它会删除它.有没有办法解决这个问题,并让它只接受"." 作为小数点?
这是输入:
<input id="version" name="version" step="0.1" min="1.0" max="250.0" type="number" class="input-small" placeholder="87.2"></input>
Run Code Online (Sandbox Code Playgroud)
PHP代码中没有任何内容只是不寻常的
echo $_POST['version'];
Run Code Online (Sandbox Code Playgroud)
input-small css:
.input-small {
width: 90px;
}
Run Code Online (Sandbox Code Playgroud) 我在html页面上有许多输入框.我想限制用户输入2位小数后的任何数字.
目前尝试应用html 5输入Step ="0.00"但不起作用.
任何打字稿解决方案也都可以
我正在尝试实现一个输入字段,其中只允许数字键。为此,我已成功在表单中实现了仅数字验证。
但这里的要求是,除了数字键之外,其他键都不能工作。为此,我已经绑定了实现 @HostListener
在这种情况下,当我们单击字母键时,它不会显示在输入字段中,但会分配该字母的值。
请检查代码:HostListener代码:
import { Directive, ElementRef, HostListener, Input } from '@angular/core';
import { NgControl } from '@angular/forms';
@Directive({
selector: 'input[numbersOnly]'
})
export class NumberDirective {
constructor(private _el: ElementRef) { }
@HostListener('input', ['$event']) onInputChange(event) {
const initalValue = this._el.nativeElement.value;
this._el.nativeElement.value = initalValue.replace(/[^0-9]*/g, '');
if ( initalValue !== this._el.nativeElement.value) {
event.stopPropagation();
}
}
}
Run Code Online (Sandbox Code Playgroud)
HTML:
Type anything other than numbers, the change is fired even if the textfield content does not change :
<br/>
<input type="text" [(ngModel)]="value" (ngModelChange)="onChange($event)" numbersOnly/> …Run Code Online (Sandbox Code Playgroud) angular ×4
input ×2
javascript ×2
validation ×2
deprecated ×1
html ×1
key ×1
keycode ×1
point ×1
typescript ×1
user-input ×1