bumbay
@bumbay
Node.JS, MongoDB, PHP

Как изменить событие нажатия клавиш?

Есть отличная штука codepen.io/anon/pen/Gqbex
Там есть такие события — enter - submit, shift-enter - newline (перевод строки).

Мне нужно изменить клавишу shift на ctrl. Казалось бы, меняй в чем проблема?
Проблема есть.

Меняю — не работает.

Вот смотрите codepen.io/anon/pen/byEmc
  • Вопрос задан
  • 2401 просмотр
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Уберите все скрипты со страницы и посмотрите — это нативное поведение браузера.
Придётся добавлять перенос вручную. Можно вот так по-рабоче-крестьянски влупить строчку:

if (code == 13) {
	if (event.ctrlKey) {
		elem.val(elem.val() + '\r\n');
	} else {
		event.preventDefault();
		scope.$apply(attrs.enterSubmit);
	}
}

Update: Начинка всё равно на нативном Javascript, так что без разницы, в каком языке.
target — это ссылка на textarea, e — на событие.
if ((e.keyCode || e.which) == 13) {
	if (e.ctrlKey) {
		if (target.selectionStart) {
			var start = target.selectionStart;

			target.value = target.value.slice(0, start) + '\r\n' + target.value.slice(target.selectionEnd);
			target.selectionStart = target.selectionEnd = start + 1;
		} else {
			var range = document.selection.createRange();

			range.text = '\r\n';
			range.collapse(false);
			range.select();
		}
	} else {
		e.preventDefault();
		// тут делаем ку
	}
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы