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