ExtJS5 현재 커서 위치에 텍스트 내용 삽입 가져오기

1855 단어 ExtJs
ExtJS5를 개발할 때 현재 커서가 있는 위치에 텍스트를 삽입하는 데 부딪힐 수 있습니다.
예를 들어 한 페이지에 여러 개의 텍스트 필드 컨트롤러가 있는데 어떤 컨트롤러를 선택하든지 간에 일부 텍스트 내용을 커서 위치에 삽입할 수 있다.코드를 찾았습니다. 테스트를 통해 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을 사용해야 합니다.

좋은 웹페이지 즐겨찾기