ExtJS5 현재 커서 위치에 텍스트 내용 삽입 가져오기
1855 단어 ExtJs
예를 들어 한 페이지에 여러 개의 텍스트 필드 컨트롤러가 있는데 어떤 컨트롤러를 선택하든지 간에 일부 텍스트 내용을 커서 위치에 삽입할 수 있다.코드를 찾았습니다. 테스트를 통해 ExtJS5에서 사용하기 좋습니다. ExtJS5의 자료가 비교적 적기 때문에 지금 여러분께 공유합니다.
/**
* ExtJS Textarea
*/
Ext.override(Ext.form.TextArea, {
getCursorPosition: function(a) {
var b = {
text: "",
start: 0,
end: 0
};
a.focus();
if (a.setSelectionRange) b.start = a.selectionStart, b.end = a.selectionEnd, b.text = b.start != b.end ? a.value.substring(b.start, b.end) : "";
else if (document.selection) {
var c, d = document.selection.createRange(),
e = document.body.createTextRange();
e.moveToElementText(a);
b.text = d.text;
b.bookmark = d.getBookmark();
for (c = 0; e.compareEndPoints("StartToStart", d) < 0 && d.moveStart("character", -1) !== 0; c++) a.value.charAt(c) == "
" && c++;
b.start = c;
b.end = b.text.length + b.start
}
return b
},
setCursorPosition: function(a, b) {
b || alert("You must get cursor position first.");
if (a.setSelectionRange) a.focus(), a.setSelectionRange(b.start, b.end);
else if (a.createTextRange) {
var c = a.createTextRange();
a.value.length === b.start && c.collapse(!1);
c.select()
}
},
insertAtCursor: function(a) {
var b = this.getCursorPosition(this.inputEl.dom),
c = b.start,
d = b.end,
e = this.getValue(),
b = e.substring(0, c),
d = e.substring(d, e.length);
this.setValue(b + a + d);
this.setCursorPosition(this.inputEl.dom, {
text: "",
start: c + a.length,
end: c + a.length
})
}
});
사용할 때 텍스트 필드 대상을 만들고 insertAtCursor를 호출하면 됩니다.상기 코드는textarea에 필요한 방법을 추가한 것으로 밑바닥에서도 원본 JS의 조작을 사용한 것을 볼 수 있습니다.
ExtJS5에서 DOM의 요소를 가져오려면 inputEl을 사용해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
문자열 길이를 계산하고 중국어로 두 개를 계산합니다.텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.