|
|
|
|
|
для: chelovek
(27.09.2006 в 20:34)
| | Спасибо, не стОит :) | |
|
|
|
|
|
|
|
для: 12345
(27.09.2006 в 19:43)
| | Спасибо 12345, помог! Жили бы мы в одном городе - я бы тебе пиво поставил! :) | |
|
|
|
|
|
|
|
для: chelovek
(27.09.2006 в 19:14)
| | А, понятно - в исходном скрипте какие события - onmousedown, а у вас - onclick.
Место ошибки нашли верное, туда выходит программа в IE.
Но у Вас ещё в Опере и FF скрипт не работал. Чтобы работал правильно,
для Оперы - не надо забывать и выбрасывать insBeg=1; в onload;
для FF писать
tt=document.getElementsByName('TypeMold')[0];
var Marker = tt.options[tt.selectedIndex].value;
| а не window.TypeMold
Работающий скрипт прикреплён. | |
|
|
|
|
|
|
|
для: 12345
(27.09.2006 в 18:59)
| | Sorry.
... в прикрепленном файле полная страничка... | |
|
|
|
|
|
|
|
для: chelovek
(27.09.2006 в 18:20)
| | Ну это неполный, как я его буду тестировать?
Покажите рабочую страницу или ссылку на неё.
...(дополнение)
Ну вот подключил свой остаток функций к Вашей - работает, вставляет [ smile] в позицию курсора (IE6) | |
|
|
|
|
|
|
|
для: 12345
(27.09.2006 в 11:44)
| |
function insPic(param1, param2){
param1 = brkL + param1 + (param2 == brkR ? '=' : brkR);
var FlagParam = (param2 != null ? true : false);
var s = TextareaObject.value;
var insPosL, insPosR;
if(TextareaObject.selectionEnd == null){ //IE
var tR = document.selection.createRange();
var ch = 'character'
var tR1 = document.body.createTextRange();
if(tR.parentElement && tR.parentElement() != TextareaObject){
insPosL = insPosR = s.length;
}else{
insPosL = tR.text.length;
tR1.moveToElementText(TextareaObject);
tR.setEndPoint('StartToStart', tR1);
insPosR = tR.text.length;
insPosL = insPosR - insPosL;
}
}else{ //Opera
insPosL = TextareaObject.selectionStart;
insPosR = TextareaObject.selectionEnd;
}
var insText = s.substring(insPosL, insPosR);
if(!FlagParam){
param2 = param1;
param1 = '';
}
TextareaObject.value = s.substring(0, insPosL) + param1 + insText + param2 + s.substring(insPosR, s.length);
var insCursor = insPosR + param1.length + (!FlagParam || insPosL != insPosR ? param2.length : 0);
var insCursorL = insCursor;
if(document.body.createTextRange){ //IE
setTimeout("var t = TextareaObject.createTextRange(); t.collapse(); t.moveEnd('" + ch + "', " + insCursor + "); t.moveStart('" + ch + "', " + insCursorL + "); t.select();", 1);
}else{ //Opera
if(document.all) TextareaObject.focus();
if(TextareaObject.selectionEnd != null){
TextareaObject.selectionStart = insCursorL;
TextareaObject.selectionEnd = insCursor + (document.all ? 1 : 0)
setTimeout("TextareaObject.focus();", 100);
if(document.all){
var tR = document.selection.createRange();
if(insCursorL == insCursor) tR.collapse();
else tR.moveEnd('character', -1);
tR.select();
}
}
}
}
|
| |
|
|
|
|
|
|
|
для: chelovek
(27.09.2006 в 06:56)
| | Покажите код | |
|
|
|
|
|
|
|
для: chelovek
(26.09.2006 в 12:10)
| | up | |
|
|
|
|
|
|
|
для: 12345
(25.09.2006 в 18:55)
| | У меня возник еще один вопрос по этому поводу:
С кодом я разобрался, все ненужное убрал, но возникла такая проблема: Если на страничку поместить буттон, который вставляет, например SMILE, то работает не верно - вставка происходит не в позицию курсора, а в конец всего текста. Это, как я понял происходит из за условия:
if(tR.parentElement && tR.parentElement() != TextareaObject){
...
}
|
А вот как его провильно исправить не могу сообразить... Подскажите пожалуйста... | |
|
|
|
|
|
|
|
для: chelovek
(25.09.2006 в 18:35)
| | Тоже обход багов. Без неё не устанавливается курсор в поле вообще. В статье об этом упомянуто. Насколько помню, только FF мог без setTimeout установить курсор. | |
|
|
|
|