Вы можете использовать что-то вроде этого.
Обратите внимание, что я использовал недоиспользуемые клавиши специально, поскольку определенные комбинации управляющих клавиш зарезервированы только для использования браузером и не могут быть перехвачены клиентской стороной JavaScript на веб-странице. (например, ctrl+N
или ctrl+T
).
const arrKey = ['a', 'l', 'b'],
arrVal = ['addedA', 'addedL', 'addedB'];
function addText(event) {
if (event.target.classList.contains("addtext")) {
const index = arrKey.indexOf(event.key);
if (event.ctrlKey && index != -1) {
event.preventDefault();
insertAtCaret(event.target, arrVal[index]);
}
}
}
function insertAtCaret(el, text) {
const caretPos = el.selectionStart,
textAreaTxt = el.value,
newCaretPos = caretPos + text.length;
el.value = textAreaTxt.substring(0, caretPos) + text + textAreaTxt.substring(caretPos);
el.setSelectionRange(newCaretPos, newCaretPos);
};
document.addEventListener('keydown', addText);
<label><b>Text 1: </b></label><br>
<textarea placeholder="Try ctrl+a or ctrl+b" rows="10" cols="40" id="txt1" name="txt1" class="addtext"></textarea><br/>
<label><b>Text 2: </b></label><br/>
<input type="text" size="40" name="txt2" class="addtext" value=""><br/>
<label><b>Text 3: </b></label><br>
<textarea rows="10" cols="40" id="txt3" name="txt1" class="addtext"></textarea><br/>
<label><b>Text 4: </b></label><br/>
<input type="text" size="40" name="txt4" class="addtext" value="">