返回列表 發帖

如何用javascript在句子中加入空白

我現在有一個textarea,裡面預設已經有一些文字
                                                                                
ex: ____________________________________________________
   |                                                                                                         |
   | 建議使用IE6.0或Mozilla Firefox                                                        |
   | 並將螢幕解析度設定為1024*768,以獲得最佳瀏覽效果。               |
   |____________________________________________________ |


想要有這些功能                                                                                
1.使用者再任何字與字之間click時,會自動加入全行空白
2.如果是在空白的地方click則空白會移掉,讓兩個字合併在一起
                                                                                
ex:在 "議" 與 "使" 之間click變成
    ____________________________________________________
   |                                                                                                        |
   | 建議  使用IE6.0或Mozilla Firefox                                                     |
   | 並將螢幕解析度設定為1024*768,以獲得最佳瀏覽效果。              |
   |____________________________________________________|
                                                                                
想請問我要怎樣使用javascript去抓字串的位置來插入空白呢?
有需要用滑鼠位置來判斷嗎? 或是有其他更好的方法?
                                                                                
3.希望可以記錄使用者插入空白的順序和時間

這大概不好辦……英文字的大小都不一樣呢……
I.WON'T.DIE

TOP

這樣的功能是可以做,不過你得自己試試看囉,針對 IE 和支援 W3C 標準的瀏覽器有不同的方式。

IE 請參考 createRange 和相關的文件:
http://msdn.microsoft.com/en-us/library/ms536394(VS.85).aspx

W3C 的參考文件:
http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html

底下這個片段是取得選取範圍的文字,你可以從這邊開始學習怎麼做:
function getSel() {
  var editdoc = document.getElementById('tt');
  if (typeof editdoc.selectionStart != 'undefined') {
    return editdoc.value.substr(editdoc.selectionStart, editdoc.selectionEnd - editdoc.selectionStart);
  } else if(document.selection && document.selection.createRange) {
    return document.selection.createRange().text;
  } else {
    return false;
  }
}
$('#tt').mouseup(function() {
  alert(getSel());
});
首先把 id=tt 這個 textarea 綁定一個 mouseup 事件,選取文字完成後就會被驅動,這時會依據瀏覽器支援的功能,用不同的方式獲得選取的文字範圍。

至於你要做的不是「選取範圍」,但是是有相關的,可以用這一類的功能得知滑鼠坐落位置的前後是否為空白,或是文字,再接著用替代的方式將「空的選取範圍」給取代掉即可達到你的需求。
To infinity and beyond!

TOP

返回列表 回復 發帖