以这种方式使用numericCellEditor
(不使用cellEditorParams
):
var columnDefs = [
{
cellEditor: 'numericCellEditor'
},
]
不能输入小数(1.25、3.675等)。选择哪种单元格编辑器(或者可能如何调整numericCellEditor
)以使用小数,即可以编辑值,并且在打开的编辑字段中无法打印字母或其他非数字符号,但是我可以输入点或逗号作为小数点分隔符。
答案 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);
}