Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как вставить текст в место расположения курсора в поле ввода.

Сообщения:  [1-10]   [11-13] 

 
 автор: 12345   (28.09.2006 в 13:10)   письмо автору
 
   для: chelovek   (27.09.2006 в 20:34)
 

Спасибо, не стОит :)

   
 
 автор: chelovek   (27.09.2006 в 20:34)   письмо автору
 
   для: 12345   (27.09.2006 в 19:43)
 

Спасибо 12345, помог! Жили бы мы в одном городе - я бы тебе пиво поставил! :)

   
 
 автор: 12345   (27.09.2006 в 19:43)   письмо автору
 
   для: 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

Работающий скрипт прикреплён.

   
 
 автор: chelovek   (27.09.2006 в 19:14)   письмо автору
 
   для: 12345   (27.09.2006 в 18:59)
 

Sorry.
... в прикрепленном файле полная страничка...

   
 
 автор: 12345   (27.09.2006 в 18:59)   письмо автору
 
   для: chelovek   (27.09.2006 в 18:20)
 

Ну это неполный, как я его буду тестировать?
Покажите рабочую страницу или ссылку на неё.

...(дополнение)
Ну вот подключил свой остаток функций к Вашей - работает, вставляет [ smile] в позицию курсора (IE6)

   
 
 автор: chelovek   (27.09.2006 в 18:20)   письмо автору
 
   для: 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();
                }
            }
        }
    }

   
 
 автор: 12345   (27.09.2006 в 11:44)   письмо автору
 
   для: chelovek   (27.09.2006 в 06:56)
 

Покажите код

   
 
 автор: chelovek   (27.09.2006 в 06:56)   письмо автору
 
   для: chelovek   (26.09.2006 в 12:10)
 

up

   
 
 автор: chelovek   (26.09.2006 в 12:10)   письмо автору
 
   для: 12345   (25.09.2006 в 18:55)
 

У меня возник еще один вопрос по этому поводу:
С кодом я разобрался, все ненужное убрал, но возникла такая проблема: Если на страничку поместить буттон, который вставляет, например SMILE, то работает не верно - вставка происходит не в позицию курсора, а в конец всего текста. Это, как я понял происходит из за условия:

if(tR.parentElement && tR.parentElement() != TextareaObject){
...
}


А вот как его провильно исправить не могу сообразить... Подскажите пожалуйста...

   
 
 автор: 12345   (25.09.2006 в 18:55)   письмо автору
 
   для: chelovek   (25.09.2006 в 18:35)
 

Тоже обход багов. Без неё не устанавливается курсор в поле вообще. В статье об этом упомянуто. Насколько помню, только FF мог без setTimeout установить курсор.

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования