"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Javascript+Textarea: voriges zeichen selektieren

-caRty- 24.11.2005 - 11:55 1112 5
Posts

-caRty-

Here to stay
Avatar
Registered: Mar 2001
Location: Wiener Neustadt
Posts: 1661
hallo!

habe ein problem:

ich möchte mittels javascript das vorhergehende zeichen in einer textarea (vor der aktuellen curser position) selektieren, sodass ich es mittels document.selection.createRange() auswählen kann und dann löschen.

jedoch hab ich keine möglichkeit gefunden das zu realisieren!

wisst ihr mehr?

lg

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
google "javascript textarea get cursor position, 4. Link http://www.faqts.com/knowledge_base....phtml?aid=5967

Code:
//This function returns the index of the cursor location in
//the value of the input text element
//It is important to make sure that the sWeirdString variable contains
//a set of characters that will not be encountered normally in your
//text
function getCursorPos(textElement) {
  //save off the current value to restore it later,
  var sOldText = textElement.value;

//create a range object and save off it's text
  var objRange = document.selection.createRange();
  var sOldRange = objRange.text;

//set this string to a small string that will not normally be 
encountered
  var sWeirdString = '#%~';

//insert the weirdstring where the cursor is at
  objRange.text = sOldRange + sWeirdString; objRange.moveStart
('character', (0 - sOldRange.length - sWeirdString.length));

//save off the new string with the weirdstring in it
  var sNewText = textElement.value;

//set the actual text value back to how it was
  objRange.text = sOldRange;

//look through the new string we saved off and find the location of
//the weirdstring that was inserted and return that value
  for (i=0; i <= sNewText.length; i++) {
    var sTemp = sNewText.substring(i, i + sWeirdString.length);
    if (sTemp == sWeirdString) {
      var cursorPos = (i - sOldRange.length);
      return cursorPos;
    }
  }
}

Also wenn ich mir das anschau, gibts keine Moeglich ausser du insertest einen String der sicher nicht vorkommt und schaust dann wo der ist, dann weisst du's eh. Uargs :-)

Andere Links weisen darauf hin dass es mit document.selection.createRange() gehen koennte .. ein wenig mehr recherche wird sicher noch genaueres zu Tage bringen. Waere super wenn du dass dann posten koenntest.

-caRty-

Here to stay
Avatar
Registered: Mar 2001
Location: Wiener Neustadt
Posts: 1661
danke für den tip

werde ich am montag in der arbeit mal probiern! habe glaub ich einen halben tag gesucht ohne eine lösung zu finden. das problem ist, dass ich ein softkeyboard implementieren muss, jedoch der textarea "backspace" nicht senden kann.

aber wie gesagt, danke nochmal und ich werds auf diese weise versuchen

-caRty-

Here to stay
Avatar
Registered: Mar 2001
Location: Wiener Neustadt
Posts: 1661
danke es geht, kann jetzt ein zeichen vor der cursorposition löschen!

habe mir die funktion etwas umgebaut!

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Ja, welche genau? Kurze Beschreibung wie, damit andere auch profitieren, waere super. lG

-caRty-

Here to stay
Avatar
Registered: Mar 2001
Location: Wiener Neustadt
Posts: 1661
bin am mittwoch wieder in der arbeit, da werd ichs reinstellen!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz