Articles in this section
Category / Section

How to make an auto suggestion in the Spreadsheet cell?

1 min read

This knowledge Base explains how to make an auto suggestion in the JavaScript Spreadsheet cell. You can achieve this with some customization in the keyUp event. In this keyUp event, you can compare the editable text with other cell values. In this event, we have used the createRange method to creates a new range object for the document and selected the range by using the window getSelection method.

 

[Html]

 

 <div id="spreadsheet"></div>

 

 

[TS]

 

     created: (): void => {
            spreadsheet.cellFormat(
                { fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' },
                'A1:C1'
            );
            spreadsheet.element.addEventListener('keyup', event => {
                let actSheet = spreadsheet.getActiveSheet();
                let actCell = actSheet.activeCell;
                let rangeIndex = getRangeIndexes(actCell);
                for (let i = rangeIndex[2]; i > 0; i++) {
                    let cell = getCell(i + 1, rangeIndex[1], actSheet);
                    if (
                        event.key == 'Backspace' ||
                        event.key == 'Delete' ||
                        event.key == 'Escape'
                    ) {
                        return;
                    } else if (cell && cell.value) {
                        let elem = document.getElementsByClassName('e-spreadsheet-edit')[0];
                        let textLen = elem.innerHTML.length;
                        if (
                            elem.innerHTML.toUpperCase() ==
                            cell.value.toUpperCase().slice(0, textLen)
                        ) {
                            (elem as HTMLElement).innerText = cell.value;
                            let startNode = document.getElementsByClassName(
                                'e-spreadsheet-edit'
                            )[0].firstChild;
                            startNode.nodeValue = startNode.nodeValue.trim();
                            let range = document.createRange();
                            range.setStart(startNode, textLen);
                            range.setEnd(startNode, startNode.textContent.length);
                            let sel = window.getSelection();
                            sel.removeAllRanges();
                            sel.addRange(range);
                            return;
                        }
                    } else return;
                }
            });
        }

 

 

Demo Sample: https://stackblitz.com/edit/hfm3bz?file=index.ts

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please  to leave a comment
Access denied
Access denied