如何在农业网格单元格中输入小数

时间:2019-08-03 18:00:23

标签: decimal ag-grid

以这种方式使用numericCellEditor(不使用cellEditorParams):

var columnDefs = [
    {
        cellEditor: 'numericCellEditor'
    },
]

不能输入小数(1.25、3.675等)。选择哪种单元格编辑器(或者可能如何调整numericCellEditor)以使用小数,即可以编辑值,并且在打开的编辑字段中无法打印字母或其他非数字符号,但是我可以输入点或逗号作为小数点分隔符。

4 个答案:

答案 0 :(得分:0)

在官方文档中查看数字编辑器示例here

您可以将isKeyPressedNumeric函数修改为-

private isKeyPressedNumeric(event): boolean {
    const charCode = this.getCharCodeFromEvent(event);
    const charAllowed = [".","Backspace"];
    const charStr = event.key ? event.key : String.fromCharCode(charCode);
    return this.isCharNumeric(charStr) || charAllowed.includes(charStr);
}

请注意,这只是允许使用十进制数字的示例,您可以根据自己的需要修改实现。

答案 1 :(得分:0)

添加以下功能

function isCharDecimal(charStr) {
  return !!/\./.test(charStr);
}

并如下更改 isKeyPressedNumeric()

function isKeyPressedNumeric(event) {
  const charCode = getCharCodeFromEvent(event);
  const charStr = String.fromCharCode(charCode);
  return isCharNumeric(charStr) || isCharDecimal(charStr);
}

注意:这将接受多个小数点。 :(

答案 2 :(得分:0)

包括此

function isCharDecimal(charStr) {
  return '.'.indexOf(charStr) === 0;
}

然后isKeyPressedNumeric到

function isKeyPressedNumeric(event) {
  const charCode = getCharCodeFromEvent(event);
  const charStr = String.fromCharCode(charCode);
  return isCharNumeric(charStr) || isCharDecimal(charStr);
}

答案 3 :(得分:0)

作为Pavel提供的解决方案的改进,您可以使用以下内容最多允许一个小数点(但不能超过一个)。

添加此功能(其中this.eInput是您的html输入):

function isCharTheFirstDecimal(charStr) {
  return !!/\./.test(charStr) && !/\./.test(this.eInput.value);
}



然后将isKeyPressedNumeric更改为:

function isKeyPressedNumeric(event) {
    var charCode = this.getCharCodeFromEvent(event);
    var charStr = String.fromCharCode(charCode);
    return this.isCharNumeric(charStr) || 
    this.isCharTheFirstDecimal(charStr);
}



所使用的其他功能(全部来自ag-grid文档中的示例:https://www.ag-grid.com/javascript-grid-cell-editing)如下:

getCharCodeFromEvent(event) {
    event = event || window.event;
    return typeof event.which == "undefined" ? event.keyCode : event.which;
}

isCharNumeric(charStr) {
    return !!/\d/.test(charStr);
}