2010-12-16 16 views
7

Podczas wywołania funkcji z obrazu próbuję wstawić wartość tagu alt z obrazu do ramki tekstowej w miejscu, w którym znajduje się obecnie karetka.Jak wstawić tekst w aktualnej pozycji karetki w polu tekstowym

To jest kod, który obecnie mam, który wstawia wartość tagu alt na końcu obszaru tekstowego.

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

    }); 

Te 2 rzeczy zostały problem z jest określenie pozycji karetki i tworząc nowy ciąg z wartości pola tekstowego przed STANOWISKA CARETS + kodzie mam wkładając + wartości z textarea po pozycji opiekuna.

+0

możliwe duplikat [Wstawianie tekstu gdzie kursor przy użyciu JavaScript/jQuery] (http://stackoverflow.com/questions/1064089/inserting-a-text-where-cursor-jest-using-javascript-jquery) – user

Odpowiedz

19

ja już obecnie mam tego rozszerzenia w lokalu:

$.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 
     } 
    }); 
}; 

i można go używać tak:

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

również znalazłem to na czyimś blogu dawno temu i zmodyfikowałem go tak, aby było więcej w różnych przeglądarkach. nie jest w 100%, ale powinno wystarczyć. nie pamiętam, gdzie to znalazłem. –

+0

czy działa w IE 7, 8, 9? – andufo

+3

@andufo Dlaczego nie spróbujesz? –

Powiązane problemy