2010-12-16 9 views
7

Bei einem Funktionsaufruf von einem Bild versuche ich, den Alt-Tag-Wert aus dem Bild in die Textarea an der Position einzufügen, an der sich der Cursor gerade befindet.So fügen Sie Text an der aktuellen Cursorposition in einem Textfeld ein

Dies ist der Code, den ich derzeit habe, der den Alt-Tag-Wert an das Ende des Textbereichs einfügt.

$("#emoticons").children().children().click(function() { 
     var ch = $(this).attr("alt"); 
     $("#txtPost").append(ch); 

    }); 

Die 2 Dinge, die ich habe ein Problem mit mit der Position des Cursors, zu bestimmen und eine neue Zeichenfolge mit dem Wert des Textbereiches vor dem Carets positon Schaffung + den Code, den mir Einfügen + den Wert der Textarea nach der Caret-Position.

+0

möglich Duplikat [Einfügen eines Text, in dem Cursor wird mit Javascript/jquery] (http://stackoverflow.com/questions/1064089/inserting-a-text-where-cursor-is-using-javascript-jquery) – user

Antwort

19

Ich habe zur Zeit diese Erweiterung an Ort und Stelle bekam:

$.fn.insertAtCaret = function(text) { 
    return this.each(function() { 
     if (document.selection && this.tagName == 'TEXTAREA') { 
      //IE textarea support 
      this.focus(); 
      sel = document.selection.createRange(); 
      sel.text = text; 
      this.focus(); 
     } else if (this.selectionStart || this.selectionStart == '0') { 
      //MOZILLA/NETSCAPE support 
      startPos = this.selectionStart; 
      endPos = this.selectionEnd; 
      scrollTop = this.scrollTop; 
      this.value = this.value.substring(0, startPos) + text + this.value.substring(endPos, this.value.length); 
      this.focus(); 
      this.selectionStart = startPos + text.length; 
      this.selectionEnd = startPos + text.length; 
      this.scrollTop = scrollTop; 
     } else { 
      // IE input[type=text] and other browsers 
      this.value += text; 
      this.focus(); 
      this.value = this.value; // forces cursor to end 
     } 
    }); 
}; 

und Sie es wie so verwenden können:

$("#txtPost").insertAtCaret(ch); 
+0

auch, ich fand das auf jemandes Blog vor langer Zeit und änderte es um mehr zu sein Cross-Browser. es ist nicht 100%, aber sollte es tun. Ich kann mich nicht erinnern, wo ich es gefunden habe. –

+0

funktioniert es in IE 7, 8, 9? – andufo

+3

@andufo Warum versuchst du es nicht? –

Verwandte Themen