Здравейте! Имам един js за bbcode, който служи за слагане на самите тагове в textarea или инпут и като си селектирал нещо да го обгражда с ббкода, който си посочил. Проблема е следния - ако пишеш и по време на писането си слагаш ббкода няма проблем, но ако накрая като си свършил почнеш да слагаш става лого - дубликира част от текста. Ето 2 скриина да видите за какво става на въпрос:
Как да го оправя - ето js:
Как да го оправя - ето js:
Код:
<script language="javascript" type="text/javascript">
function bbcode(open_tag, close_tag, id) {
var obj = document.getElementById(id);
var spacer;
if(obj.value.length > 0) {
spacer = " ";
} else {
spacer = "";
}
var begining_text = obj.value.substr(0, obj.selectionStart);
var selected_text = obj.value.substr(obj.selectionStart, obj.selectionEnd);
var end_text = obj.value.substr(obj.selectionEnd, obj.value.length);
var caret_position = obj.selectionStart;
var text_to_caret = obj.value.substr(0, caret_position);
var text_after_caret = obj.value.substr(caret_position, obj.value.length);
// If there is a selection
if(obj.selectionStart != obj.selectionEnd) {
obj.value = begining_text + open_tag + selected_text + close_tag + end_text
} else {
// If there is not a selection
obj.value = text_to_caret + open_tag + close_tag + text_after_caret
}
//obj.value = obj.value + spacer + text;
}
</script>