Отменить разрыв строки при Enter?

Форма работает на Ajax и отправка данных происходит при нажатии на Enter

$("#txt_post").keypress(function(event){
    if(event.ctrlKey && event.keyCode == 13){
        document.getElementById('txt_post').value += '\r\n';
        return;
    }

if(event.keyCode == 13){
        send();
    }
});


Всё по плану. Отправка происходит при нажатии на Enter. Перевод строки добавляется при нажатии на CTRL+ENTER. Но проблема заключается в следующим:

Есть следующий текст(пример):
Повседневная практика показывает, что новая модель организационной деятельности влечет за собой процесс внедрения и модернизации систем массового участия. Задача организации, в особенности же начало повседневной работы по формированию позиции влечет за собой процесс внедрения и модернизации модели развития. Идейные соображения высшего порядка, а также новая модель организационной деятельности представляет собой интересный эксперимент проверки форм развития


Если курсор находится в конце, то всё нормально, а если где-то в тексте, то при нажатии на Enter, в том месте где был курсор добавляется разрыв строки
Повседневная практика показывает, что новая модель организационной деятельности влечет за собой процесс внедрения и модернизации систем массового участия. Задача организации, в особенности же начало повседневной работы по формированию позиции влечет за собой процесс

внедрения и модернизации модели развития. Идейные соображения высшего порядка, а также новая модель организационной деятельности представляет собой интересный эксперимент проверки форм развития


Как это исправить?
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
john36allTa
@john36allTa
alien glow of a dirty mind
if(event.keyCode == 13){
      event.preventDefault();  
      send();
    }

Я бы писал так:
$("#txt_post").keypress(function(event){
	if(event.ctrlKey && event.keyCode == 10){
		let self = event.target;
		let n = self.selectionStart;
		self.value = self.value.substr(0,n-1) + '\r\n' + self.value.substr(n-self.value.length);
		return;
    }
	else if(event.keyCode == 13){
		event.preventDefault();
		send();    	
    }
});
Ответ написан
Ваш ответ на вопрос

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

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