javascript - TypeScript - 数字更大还是更小验证仅当数字具有相同的 'length' 时才会响应

标签 javascript validation numbers max min

目前正在进行数字验证。我有 2 个输入,一个数字不能大于另一个数字,另一个数字不能小于第一个数字。 在输入字段中使用箭头,效果很好,但用户可以手动输入无效数字,我的目标是将该数字恢复为有效数字。

例如,from 不能大于 to,如果我添加 'to' 6 和 'from' 8,'from' 数字将恢复为有效数字 6。但是如果我向 'from 添加另一个数字',所以 'to' 是 6,'from' 是 '85',什么都不会改变,它会注册更改,但不会将其恢复为有效数字。

如果数字具有相同的“长度”,例如 60 和 80、500 和 952,那么它将正常工作。但是当它是5和80,或者20和965时,验证就会失败。

这是我的 HTML 和 TS

numberFrom: number;
  numberTo: number;

  ngOnNumberChange(event) {
    let to = this.numberTo;
    let from = this.numberFrom;

    if (from < 0) {
      this.numberFrom = from = 0;
    } else if (to < 0) {
      this.numberTo = to = 0;
    }
    if (this.numberFrom > this.numberTo) {
      this.numberFrom = this.numberTo
    }

    if (this.numberTo < this.numberFrom) {
      this.numberTo = this.numberFrom;
    }

  }
<input [(ngModel)]="numberFrom" (ngModelChange)="ngOnNumberChange($event)" type="number" [max]="numberTo" [min]="0" [placeholder]="'From'">

<input [min]="numberFrom || 0" [(ngModel)]="numberTo" (ngModelChange)="ngOnNumberChange($event)" type="number" [placeholder]="'To'">

这是 StackBlitz 中的内容。 enter link description here

最佳答案

输入的值始终是字符串,您需要先将其转换为数字,然后再进行检查。

您可以使用 parseInt+ 来做到这一点:

let to = parseInt(this.numberTo, 10);
let from = parseInt(this.numberFrom, 10);
// OR
let to = +this.numberTo;
let from = +this.numberFrom;

关于javascript - TypeScript - 数字更大还是更小验证仅当数字具有相同的 'length' 时才会响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50462842/

相关文章:

C - 找出数字的 a^2+b^2

php - IE 6 不支持我的代码的哪一部分

javascript - 如何设置新浏览器标签页的标题?

javascript - 如何使 block 中的所有链接在新选项卡中打开

javascript - 从 Aptana 验证器中排除特定文件或文件夹

java - 用户输入的数字不重复

JavaScript,深度扩展

c - 单字符用户输入和 fgets

C++输入验证以确保输入的是数字而不是字母

c# - 允许一个方法只接受数字?