사용자가 Enter 키를 누르면 커서를 새 행으로 이동 시키지만 현재 두 개의 탭으로 들여 쓰기되어 있으면 커서는 두 개의 탭으로 들여 있어야합니다.Enter 키를 누를 때 텍스트 영역의 탭 수준을 어떻게 유지합니까?
페이지 내에서 포커스 이동을 중지하기 위해 이미 탭 무시 이벤트를 구현 했으므로 이제는 탭 레벨을 새 라인에 유지하기위한 로직을 찾고 있습니다.
if(e.keyCode === 13){
//Logic here
}
사용자가 Enter 키를 누르면 커서를 새 행으로 이동 시키지만 현재 두 개의 탭으로 들여 쓰기되어 있으면 커서는 두 개의 탭으로 들여 있어야합니다.Enter 키를 누를 때 텍스트 영역의 탭 수준을 어떻게 유지합니까?
페이지 내에서 포커스 이동을 중지하기 위해 이미 탭 무시 이벤트를 구현 했으므로 이제는 탭 레벨을 새 라인에 유지하기위한 로직을 찾고 있습니다.
if(e.keyCode === 13){
//Logic here
}
$("textarea").keydown(function(e){
if(e.keyCode == 13){
// assuming 'this' is textarea
var cursorPos = this.selectionStart;
var curentLine = this.value.substr(0, this.selectionStart).split("\n").pop();
var indent = curentLine.match(/^\s*/)[0];
var value = this.value;
var textBefore = value.substring(0, cursorPos);
var textAfter = value.substring(cursorPos, value.length);
e.preventDefault(); // avoid creating a new line since we do it ourself
this.value = textBefore + "\n" + indent + textAfter;
setCaretPosition(this, cursorPos + indent.length + 1); // +1 is for the \n
}
});
function setCaretPosition(ctrl, pos)
{
if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
내 요구에 적합해야합니다. 감사합니다. – JMac
고마워요. 나는 이런 식으로 사방을 찾고 있었는데 나는 그것을 찾을 수 없었다. –
당신은 유지하기 위해 필요에 따라 텍스트 영역의 텍스트 끝에 탭 또는 공백을 추가 한 후 현재 탭 수준을 유지하는 폼 클래스 로컬 변수를 유지해야하고,거야 그 탭 수준. 사용자가 원하는 경우 탭 레벨을 줄일 수 있도록 Shift-Tab을 연결해야합니다. –