在 ag 网格输入中只允许十进制值

Posted

技术标签:

【中文标题】在 ag 网格输入中只允许十进制值【英文标题】:allow only decimal value in ag grid input 【发布时间】:2021-10-22 23:41:44 【问题描述】:

我是前端开发的新手。我想制作一个可编辑的 ag-grid 单元格,允许值范围为 0.00, 0.01, 0.02, ... to 100.00

我使百分比列可编辑。现在它只允许数值。但我需要允许十进制值的范围为0.00, 0.01, 0.02, ... to 100.00

屏幕截图:

StackBlitz url.

【问题讨论】:

当你说“现在它只允许数值”时,你的意思是它只允许 integer 值(换句话说,整数)? 【参考方案1】:

您可以在 ag-grid 中使用以下代码十进制输入文本。最小值为 0.00 最大值为 100.00

完整示例:https://stackblitz.com/edit/angular-ivy-t2uxxs?file=src%2Fapp%2Fag-grid-numeric-editor.ts

import 
  AfterViewInit,
  Component,
  ViewChild,
  ViewContainerRef
 from '@angular/core';

@Component(
  selector: 'app-numeric-editor-cell',
  template: `
    <input
      #i
      [value]="params.value"
      (keypress)="onKeyPress($event)"
      (keydown)="onKeyDown($event)"
      (keyup)="onKeyUP($event)"
      style="width: 100%; height: -webkit-fill-available;"
    />
  `
)
export class NumericEditorComponent implements AfterViewInit 
  @ViewChild('i') textInput;
  params: any;

  ngAfterViewInit() 
    setTimeout(() => this.textInput.element.nativeElement.focus());
  

  agInit(params: any): void 
    this.params = params;
  
  getValue() 
    return this.textInput * 2;
  
  onKeyUP(event) 
  onKeyPress(event) 

  onKeyDown(event) 
    if (
      event.keyCode === 8 ||
      event.keyCode === 46 ||
      event.keyCode === 37 ||
      event.keyCode === 39
    ) 
      return true;
    
    if (event.target.value.length >= 6) 
      event.preventDefault();
    
    if (event.key == '.') 
      if (event.target.value.includes('.')) 
        event.preventDefault();
      
     else if (!isNumeric(event)) 
      event.preventDefault();
     else if (event.target.value + event.key > 100.01) 
      event.preventDefault();
     else if (event.target.value.includes('.') && event.key != '.') 
      let myarr = (event.target.value + event.key).split('.');
      if (myarr[1].length > 2) 
        event.preventDefault();
      
    
    function isNumeric(ev) 
      return /\d/.test(ev.key);
    
  

【讨论】:

以上是关于在 ag 网格输入中只允许十进制值的主要内容,如果未能解决你的问题,请参考以下文章

kendo数字文本框配置,用于在文本框中输入时仅限制两个十进制值

将值更新到 AG 网格中的服务器

Ag 网格:数组对象值未正确显示

无论 ag-Grid 中的 colDef 可编辑值如何,如何禁用整个网格?

Ag 网格仅在组值之间放置边框

如何在反应中实现 AG 网格行内的按钮