验证输入文本框仅允许数字,负号和小数值的指令

时间:2016-12-10 10:48:12

标签: angular typescript angular-directive

我正在尝试验证“text”类型的输入文本框,以仅允许带有负数或小数值的数字或数字。 例如:100,002,-3.4,-6,8.5 目前代码是不验证' - '或'。'的代码。

import { Directive, ElementRef, HostListener, Input } from '@angular/core';
@Directive({
  selector: '[myValidate]'
})
export class HighlightDirective {
  constructor(private el: ElementRef) { }
  @Input('myValidate') highlightColor: string;
  @HostListener('keyup', ['$event']) onKeyDown(event) {
    let oldValue = event.target.value;
    let keyPressed = event.key;
    let keyCode = event.keyCode;
    if (isNaN(oldValue.substr(oldValue.length - 1)) || keyCode === 32) {
      this.el.nativeElement.value = oldValue.substr(0, oldValue.length - 1);
    } else {
      return null;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您可能正在寻找JavaScript parseFloat() function

parseFloat('123')
123
parseFloat('1.23')
1.23
parseFloat('-1.23')
-1.23
parseFloat('abc')
NaN
parseFloat('0002')
2
parseFloat('000123')
123