рони,
ну думаю будет так: проверяется строка, сначала находятся самые крайние теги к выделенному фрагменту проверяется наличие вложенных, если нет таких же тегов совпадающих с переданными - фрагмент обрамляется переданными тегами, если есть такиеже теги (вложенные или крайние) как переданные - то они обрезаются...... как то так... но все же я думаю это неоч хорошее решение, верится что есть другой более разумный подход, только не знаю какой( |
Вот сделал, но очень криво работает:
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, время: 13:34. |