За последние 24 часа нас посетили 60283 программиста и 1813 роботов. Сейчас ищет 831 программист ...

Работа с выделениями

Тема в разделе "JavaScript и AJAX", создана пользователем iKNG, 14 окт 2012.

  1. iKNG

    iKNG Активный пользователь

    С нами с:
    24 авг 2012
    Сообщения:
    8
    Симпатии:
    0
    В общем, надо сделать так, чтобы при выделении в textarea части текста и при нажатии на соответствующую кнопку, скрипт добавлял по бокам выделенного текста добавлялись и то есть что то вроде BBcode.
    У меня при нажатии на кнопку не добавляется BBcode, но и ошибки в консоли Firebug'а не вылезает. Код:
    Файл: index.html
    Код (Text):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2.     <html xmlns="http://www.w3.org/1999/xhtml">
    3.     <head>
    4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5.     <title>Тестовая страница</title>
    6.     <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    7.     <script type="text/javascript" src="js/editor.js"></script>
    8.     <script type="text/javascript">
    9.     </script>
    10.     <link type="text/css" rel="stylesheet" href="css/editor.css" />
    11.     </head>
    12.     <body>
    13.     <form>
    14.     <textarea name="text" editor="true"></textarea>
    15.     </form>
    16.     </body>
    17.     </html>


    Файл: editor.js
    Код (Text):
    1. $(document).ready(function(){
    2.             function wrapSelection (open, close, thisElement) {
    3.               var textareaJQuery = $('#'+thisElement);
    4.                     if (document.selection) {
    5.                             var selstr = document.selection.createRange();
    6.                             selstr.text = open+selstr.text+close;
    7.            } else if (document.getElementById(thisElement).selectionstart || document.getElementById(thisElement).selectionstart == "0"){
    8.            var text=textareaJQuery.val();
    9.            var start=document.getElementById(thisElement).selectionstart;
    10.            var end=document.getElementById(thisElement).selectionend;
    11.            var tagandtext=open+text.substr(start, end-start)+close;
    12.            textareaJQuery.val(text.substr(0, start)+tagandtext+text.substr(end));
    13.      }
    14.       }
    15.             var editor = $('textarea[editor="true"]');
    16.             var toolsContent = '<div class="editor-tools"><div class="editor-tool" style="font-weight:bold;" id="tool1">b</span></div>';
    17.             editor.attr('id','editor').before(toolsContent);
    18.             $('.editor-tools #tool1').mouseout(function(){
    19.                     wrapSelection("[b]", "[/b]", 'editor');
    20.             });
    21.            
    22.            
    23.            
    24.     });
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если у вас во время работы выделения - это 100% ко врачу! (о_О)
     
  3. iKNG

    iKNG Активный пользователь

    С нами с:
    24 авг 2012
    Сообщения:
    8
    Симпатии:
    0
    Под столом ржу нимагу. А если без флуда и серьёзно?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дебаг js дело такое... скучное...
     
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Сочувствую =)))

    Пока флудим, а то чистка форума на носу =))))