2012年2月22日 星期三

如何處理textarea內文字編排或插入

    這次為了寫微算機project,趁機研究了一下bootstrap和textarea內的文字操作,一開始以為javascript內有函式可以引用,不過後來發現需要自己寫,而且牽涉到textarea的操作還有內建的物件的概念,所以就寫了筆記記錄下來。

因為我想要捕捉使用者游標的位置,所以我設定了一個cursor object

function cursor (e) {
 this.e = e;
 this.prefix = e.value.substring(0, e.selectionStart);
 this.suffix = e.value.substring(e.selectionEnd);
 this.start = e.selectionStart;

 this.insertTextInCursor = function(text){
  this.e.value = this.prefix + text + this.suffix; 
  codeboard.setSelectionRange(this.start+text.length,this.start+text.length);
 }
}
利用event(e)內的數值來儲存原本的文字(prefix+選取的範圍+suffix),而start則為游標的目前位置
設定+text.length則會在你插入新的文字之後,游標就會自動移動到插入文字後的位置。

裡面只有一個method用來在游標的位置插入,
把滑鼠和鍵盤對textarea做操作時候的event設定好,使得他在每次受到改變範圍的時候,都會重新建立一個位置以保持正確的位置就可以了(範例使用jQuery)


$("#codeboard").mouseup(function(){
 cur = new cursor(codeboard);
})
.keydown(function(e){
 cur = new cursor(codeboard);
});

沒有留言:

張貼留言