대략적인 해결책은 다음과 같습니다. 텍스트의 문자 수, 텍스트 너비 및 상대적인 마우스 오프셋으로부터 대략적인 문자 오프셋을 계산하여 작동합니다.
커서 위치를 설정하는 기능 (한 번 우리는 그것을 계산)
http://jsfiddle.net/4LmZ9/
$.fn.selectRange = function(start, end) {
if(!end) end = start;
return this.each(function() {
if (this.setSelectionRange) {
this.focus();
this.setSelectionRange(start, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
});
};
$('span').on('click', function(evt)
{
var left = $(this).offset().left;
var width = $(this).width();
var clen = $(this).text().length;
var offset = parseInt((evt.pageX - left)/width * clen);
$(this).replaceWith($('<input />').val($(this).html()));
$('input').trigger('focus').selectRange(offset);
});
https://stackoverflow.com/a/841121/1961666
(당신은 각 문자의 폭에 그것을 복용을 계산하는 경우, 당신은 더 나은 정밀도를 얻을 수 있습니다에서 오는
계정, 중요하다면.)
자바 스크립트로 마우스 커서를 움직일 수 없습니다. 원래 항목을 "클릭"하여 실제 포인터가 아닌 포인터를 배치 할 수 있습니다. – ryan
마우스를 움직이기를 원하지 않습니다. 명시된 바와 같이 속성을 재사용하기 위해 하나의 이벤트를 사용/복사하고 싶습니다. – ciscoheat