Witam ponownie. Zastanawiam się jak dodać tekst do textarea w miejscu gdzie był kursor po naciśnięciu na . Dodanie na koniec czy początek ciągu to prostota ale tutaj nie mam pojęcia.
0
1
Wkleje ci fragment kodu, ktory jednoczesnie jest wtyczka do jQuery:
(function($)
{
$.fn.extend(
{
insertAtCaret: function(openWith, closeWith, value)
{
/**
* @todo Musimy uzyc tej dziwnej instrukcji (pobierajac ID textarea poprzez document.getElementById)
* poniewaz nie dziala prawidlowo na firefox. Do poprawy!
*/
if (!this.attr('id'))
{
this.attr('id', 'textarea_content');
}
var element = document.getElementById(this.attr('id'));
if (document.selection)
{
element.focus();
sel = document.selection.createRange();
sel.text = openWith + (sel.text.length > 0 ? sel.text : value) + closeWith;
element.focus();
}
else if (element.selectionStart || element.selectionStart == '0')
{
var startPos = element.selectionStart;
var endPos = element.selectionEnd;
var scrollTop = element.scrollTop;
if (startPos != endPos)
{
var value = openWith + element.value.substring(startPos, endPos) + closeWith;
}
else
{
var value = openWith + value + closeWith;
}
element.value = element.value.substring(0, startPos) + value + element.value.substring(endPos, element.value.length);
element.focus();
element.selectionStart = startPos + value.length;
element.selectionEnd = startPos + value.length;
element.scrollTop = scrollTop;
}
else
{
element.value += (openWith + value + closeWith);
element.focus();
}
}
});
}
)(jQuery);
Majac taki fragment kodu mozesz zrobic:
$('#textarea').insertAtCaret("", '', "test");
0
Niestety kod nie działa. Początek moich kodów jQuery:
$(document).ready(function() {
(function($)
{
$.fn.extend(
{
insertAtCaret: function(openWith, closeWith, value)
{
if (!this.attr('id'))
{
this.attr('id', 'elm1');
}
var element = document.getElementById(this.attr('id'));
if (document.selection)
{
element.focus();
sel = document.selection.createRange();
sel.text = openWith + (sel.text.length > 0 ? sel.text : value) + closeWith;
element.focus();
}
else if (element.selectionStart || element.selectionStart == '0')
{
var startPos = element.selectionStart;
var endPos = element.selectionEnd;
var scrollTop = element.scrollTop;
if (startPos != endPos)
{
var value = openWith + element.value.substring(startPos, endPos) + closeWith;
}
else
{
var value = openWith + value + closeWith;
}
element.value = element.value.substring(0, startPos) + value + element.value.substring(endPos, element.value.length);
element.focus();
element.selectionStart = startPos + value.length;
element.selectionEnd = startPos + value.length;
element.scrollTop = scrollTop;
}
else
{
element.value += (openWith + value + closeWith);
element.focus();
}
}
});
}
)(jQuery);
inne,,,,,,,,,,,,,,,,,,,,,,
$('span[id="dodajplikdowpisu"]').click(function(){
$('#elm1').insertAtCaret("", '', "test");
});
HTML:
<textarea id="elm1" name="elm1" rows="15" style="width: 100%" class="tinymce">
<p>fhjdlhkfkgkh gfrseytgfcvvck hdertggj</p>
</textarea>
<span id="dodajplikdowpisu" class="button">Dodaj tresc do wpisu</span>
Wywołanie zdarzenia działa, testowane ale tekst się nie dodaje do wpisu.
0
Ten moj kod jest z tej wtyczki: http://redmine.boduch.net/projects/coyote-cmf/repository/show/trunk/template/js/wikieditor
Tam to dziala wiec musisz sobie potestowac :)
0
Może przez to że używam tinyMCE?
0
Na pewno. Poczytaj dokumentacje, czy tinyMCE nie udostepnia interfejsu umozliwiajacego takie dzialanie.