sjs单元格如何限制只允许录入数据值
表格中有计算公式,但是有一部分可录入的单元格不允许用户填写公式,不能粘贴进去公式或者拖拽填充公式,单元格只能录入数据或粘贴进去数据,如何能实现?幽游 发表于 2024-11-25 16:45
这是控制了在录入了=号,单元格不允许录入完成,如何做到=号也不让他录入到单元格里?
那可以尝试监听按键等于号的事件,一般情况下,在使用SpreadJS电子表格时,通过UI操作需要用到等于号的场景一般就是在单元格中输入公式时。那么,监听按键事件,当按键为等于号时,通过SpreadJS的cancelInput命令强行退出输入编辑即可。如下动图所示:
可以参考如下代码:
document.addEventListener('keydown', function(event) {
// 判断按下的键是否为等于号
if (event.key === '=') {
console.log('你按下了等于号 (=)');
spread.commandManager().execute({ cmd: "cancelInput", sheetName: spread.getActiveSheet().name() });
}
});
您好!可以通过判断输入数据是否由等于号开始判别是否输入了公式。由于您提出除了编辑外还希望粘贴、拖拽填充也能禁止引入公式,那么,可以分别通过监听EditChanging、ClipBoardPasting实现。具体地,在每个事件中判断试图设置在单元格中的数据是否以等于号开头,一般情况下可将这样的数据看作公式。
通过EditEnding事件禁止在单元格中输入公式,参考如下代码:
spread.bind(GC.Spread.Sheets.Events.EditEnding, function (e, args) {
console.log('edit end: ', args);
var inputData = args.editingText;
if(inputData && inputData.length > 0){
var text = inputData.trim();
if(text.length !== 0 && text.startsWith("=")){
console.log("不支持输入公式");
args.cancel = true;
}
}
});
通过ClipboardPasted事件阻拦在单元格粘贴公式,参考如下代码:
spread.bind(GC.Spread.Sheets.Events.ClipboardPasting, function(e, args) {
console.log('clipboard pasting, args: ', args);
if (args.pasteData && args.pasteData.text) {
var inputData = args.pasteData.text;
console.log('text: ', inputData);
if(inputData && inputData.length > 0){
var text = inputData.trim();
if(text.length !== 0 && text.startsWith("=")){
console.log("不支持输入公式");
args.cancel = true;
}
}
}
});
在输入、粘贴时禁止了公式输入,拖拽填充时自然也就不存在以公式为拖拽源的情景。 这是控制了在录入了=号,单元格不允许录入完成,如何做到=号也不让他录入到单元格里?
页:
[1]