При клике по textarea курсор мыши всегда встает на последнюю позицию в тексте.
Вопрос почему так и как от этого избавиться.
Что я написал:
1) Создаю функцию конструктор которая создает поле div а внутри поле textarea
2) Div служит для того что бы можно было перетаскивать это поле по экруну
3) Вешаю событие mousedown на body и создаю поле с textarea при клике
4) Слушаю событие и определяю где был клик и если это поле textarea ставлю focus() и при этом указатель курсора всегда на последнем символе веденного текста в этом поле.
Немного кода
$('body').on(admin.touchStartEvent, e => {
e.stopPropagation();
e.preventDefault();
const cls = $(e.target).attr('class');
console.log(cls);
$((e.target).closest('.wrapper-commite')).css('z-index', ++admin.zIndexCommit);
admin.extactTouchPoint(e);
const {top, left} = $('.wrapp-img').offset();
switch (cls){
case 'wrapper-commite':
return false;
case 'commit-textarea medium-editor-element':
$(e.target).on('click', ev => {
ev.stopPropagation();
console.log($(ev.target).text());
$(ev.target).focus();
});
// $(e.target).mouseup();
// $(e.target).focus(); // Здесь мне нужно как то поставить указатель мыши на тот участок текста куда я хочу, а не в конец текста
// $(e.target).click();
// console.log($(e.target));
break;
case 'commit-number':
admin.moveElement = $(e.target).closest('.wrapper-commite');
admin.moving = true;
break;
case 'wrapp-img__img':
console.log('pf');
addCommit.createCommit();
admin.moving = true;
break;
case 'remove-commite':
$(admin.moveElement).mouseup();
$(e.target).closest('.wrapper-commite').remove();
admin.moveElement = '';
admin.moving = false;
return false;
case 'close-commite':
addCommit.closeElem($(e.target).closest('.wrapper-commite'));
return false;
default:
console.log(cls);
}
admin.commitePosX = admin.touchX - left; // получаем координаты элемента
admin.commitePosY = admin.touchY - top; // относительно края окна
$(admin.moveElement).css({top: admin.commitePosY, left: admin.commitePosX});
admin.touchStartX = admin.touchX;
admin.touchStartY = admin.touchY;
});
$('body').on(admin.touchMoveEvent, e => {
if (!admin.moving){
return false;
}
admin.extactTouchPoint(e);
let newY = admin.commitePosY + (admin.touchY - admin.touchStartY);
let newX = admin.commitePosX + (admin.touchX - admin.touchStartX);
admin.moveElem(admin.moveElement, newX, newY, function (){admin.moving = true;});
});
$('body').on(admin.touchEndEvent, e => {
e.stopPropagation();
e.preventDefault();
admin.moving = false;
admin.moveElement = '';
});
admin.moveElem = (elem, x, y, callback) => {
$(elem).css({top: y, left: x});
callback();
};
Может я изначально что то не то делаю ?