Thursday, December 25, 2008

开写工作博客,第一篇,textarea input 区域 获取及设置 cursor position

以下文字通过以下在线拼音输入法输入:

http://input.abcn.net/

前两天在学校机房碰到民崇,他电脑坏了,作业什么的只能在学校机房做,没有中文输入法很头疼,这段在公司也是,能显示中文,但是没有权限装中文输入法。。。

在网上有一些网站提供在线中文输入法,但是都不太完美,我暂时把 Dict.cn 海词 的在线中文输入法改了改放上,集合了一些其它站上的优点,比如加了MSN Web Message WebQQ ICQ2Go!,不过还是不够完美,不能输入“”《》这四个符号。以后继续修改。。。不过比较麻烦貌似。先这么放上,基本够用了,而且很好用,词的顺序跟我最爱用的智能ABC完全一样,huhu~

工作博客第一篇,内容是javascript...


function setCursorPos(element, pos) {

 if (element.createTextRange) { // IE

  var range = element.createTextRange();

  range.collapse(true);

  range.moveStart('character', pos);

  range.select();

 } else if (element.setSelectionRange) { // Firefox

  element.focus();

  element.setSelectionRange(pos+1, pos+1);

 }

}



function getSelectionPos(element) {

 if (typeof(element.selectionStart) == "number") { // Firefox einfach so, egal in Textarea oder Input

  start = element.selectionStart;

  end = element.selectionEnd;

 } else if (document.selection) { // IE Textarea, muss die Anzahl von Leerzeichen bestimmen

  var range = document.selection.createRange().duplicate();

  if (element.type == "textarea") {

   var range_all = document.body.createTextRange();

   range_all.moveToElementText(element);

   for (start = 0; range_all.compareEndPoints("StartToStart", range) < 0; start++)

    range_all.moveStart('character', 1);

   start_leer = 0; // Leerzeichen vor der start-position zu finden

   for (var i = 0; i <= start+start_leer; i++) {

    if (element.value.charAt(i) == '\n')

     start_leer++;

   }

   var range_all = document.body.createTextRange();

   range_all.moveToElementText(element);

   for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end++)

    range_all.moveStart('character', 1);

   end_leer = 0; // Leerzeichen vor der end-position zu finden

   for (var i = 0; i <= end+end_leer; i++) {

    if (element.value.charAt(i) == '\n')

     end_leer++;

   }

  } else { // IE Input

   var flag = false;

   if (range.text == '') { // falls nichts selected, move die Endpunkt zum End

    range.moveEnd('character', element.value.length);

    flag = true;

   }

   // falls in Text Range gibt es noch gar keine Zeichen, das bedeutet, Cursor ist jetzt am End des Input area

   // dann start position ist die Lange des Strings, else start position ist die Position des ersten Zeichens

   start = (range.text == '') ? element.value.length : element.value.indexOf(range.text);

   // falls vorher ist die Text Range leer (flag==true), dann end position gleich wie start position

   // else ist end position = start position + die Lange des Strings

   end = flag ? start : start + range.text.length;

   start_leer = 0;

   end_leer = 0;

  }

 }

}

1 comment:

  1. Good Preparation will Help to Gain the Best Scores in the Examination. Also, Candidates Can Download the Subject Wise Previous Question Paper 2023 by Hitting the Link. Go Through the Entire Page to get JAC Board 11th Sample Paper 2023 More Detailed Information About the JAC 11 Exam Pattern. Bookmark This Page to Know the Latest Information Quickly.

    ReplyDelete

© Chutium / Teng Qiu @ ABC Netz Group