рони,
ну думаю будет так: проверяется строка, сначала находятся самые крайние теги к выделенному фрагменту проверяется наличие вложенных, если нет таких же тегов совпадающих с переданными - фрагмент обрамляется переданными тегами, если есть такиеже теги (вложенные или крайние) как переданные - то они обрезаются...... как то так... но все же я думаю это неоч хорошее решение, верится что есть другой более разумный подход, только не знаю какой( |
Вот сделал, но очень криво работает:
setTag = function(tag) { var mainDiv = document.getElementById(sett.id), sel = getSel(mainDiv), val = editor.html(); for(var i=sel.start; i>0; i--){ if(val[i]==' ' || val[i]=='<'){ sel.start=i; break; } } for(var i=sel.end; i<val.length; i++){ if(val[i]==' ' || val[i]=='<'){ sel.end=i; break; } } var fragment = val.substr(sel.start, (sel.end-sel.start)); if(fragment.search("<"+tag+">")==0){ fragment=fragment.replace("<"+tag+">",""); fragment=fragment.replace("</"+tag+">",""); } var text = val.substr(0, sel.start) + "<"+tag+">" + fragment + "</"+tag+">" + val.substr(sel.end); editor.html(text); $(".html").val(text); } надо что-то другое думать( если бы получить родительский элемент исходя из положения курсора (sel.start).... |
Sanu0074,
на всякий случай http://learn.javascript.ru/vydelenie...ge-i-selection |
Часовой пояс GMT +3, время: 15:54. |