Автоматическое добавление содержимого в textarea

Тема в разделе "JavaScript", создана пользователем AGENT131313, 15 дек 2012.

Модераторы: ZiX
  1. AGENT131313

    AGENT131313 Забанен

    Регистр.:
    17 мар 2009
    Сообщения:
    279
    Симпатии:
    28
    Доброго времени суток!
    Необходима ваша помошь))
    В общем есть окно textarea так же есть всплывающее меню.
    Необходимо следующее: в поле ввода добавляем сылку, и нужно чтобы она после отправки уже уходило в таком виде
    Код:
    [img]url[/img]
    В общем как в dle допустим вставка изображений

    Это поле находится в всплывающем окне. Необхходимо добавить сылку в него, потом кнопку добавить и оно появляется уже в textare в виде что выше привел
     
  2. StrikeOFF

    StrikeOFF ♥kan inte lyfta utan lift♥

    Регистр.:
    20 мар 2010
    Сообщения:
    362
    Симпатии:
    200
    PHP:
    <?php
    if(isset($_POST['text'])) {
      if(!empty(
    $_POST['text'])) {
      echo 
    "[img]".htmlentities($_POST['text'])."[/img]";
      }
    }
    ?>
    <form action="<?=$_SERVER['SCRIPT_NAME'];?>" method="POST">
    <input type="textarea" name="text">
    <input type="submit" value="Отправить">
    </form>
     
    AGENT131313 нравится это.
  3. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39
    Если планируется использовать php версии до 5.4, для некоторых ещё актуально, наличие кодировки обязательно. Т.к. на выходе из этой функции htmlentities() может получиться ерунда.
    PHP:
    <?php
    if(isset($_POST['text'])) {
      if(!empty(
    $_POST['text'])) {
      echo 
    "[img]"htmlentities($_POST['text'], ENT_NOQUOTES"UTF-8")."[/img]";
      }
    }
    ?>
    <form action="<?=$_SERVER['SCRIPT_NAME'];?>" method="POST">
    <input type="textarea" name="text">
    <input type="submit" value="Отправить">
    </form>
    При сохранении в базу данных не забываем, проделать
    http://php.net/manual/ru/function.mysql-real-escape-string.php (либо следовать предупреждению в документации)
    И
    PHP:
    htmlentities($_POST['text'], ENT_NOQUOTES"UTF-8")
    Естественно если кодировка другая, то нужно изменить на свою.
     
  4. AGENT131313

    AGENT131313 Забанен

    Регистр.:
    17 мар 2009
    Сообщения:
    279
    Симпатии:
    28
    В общем я сделал немного по другому, канешно так меньше удобнее но нормально все работает. сделал кнопку
    Код:
    <a href="javascript:void(0);" onclick="insertTag('message','[img]','[/img]');"><img title="Картинка" src="/images/image.png" width="23" height="25" border="0" alt="" /></a> 
    и вот такой скрипт:
    Код:
    <script>
    function insertTag(_obj_name, _tag_start, _tag_end)
    {
    var area=document.getElementsByName(_obj_name).item(0);
    if (document.getSelection)
    {
    area.value=area.value.substring(0,area.selectionStart)+
    _tag_start+
    area.value.substring(area.selectionStart, area.selectionEnd)+
    _tag_end+
    area.value.substring(area.selectionEnd,area.value.length);
    }
    else
    { var selectedText=document.selection.createRange().text;
      if (selectedText!='')
      { var newText=_tag_start+selectedText+_tag_end;
      document.selection.createRange().text=newText;
    }
    }
    }
    </script>
    Таким образов у меня появляется в форме так6
    Код:
    [img][/img]
    Подскажите как сделать чтобы в IE работало?

    Пришлось переделать. Вот так сделал
    Код:
     <script language="javascript" type="text/javascript">
    function tag_add(obj, str1, str2) { 
    if(document.selection) { // Для IE 
    var s = document.selection.createRange(); 
    if (s.text) { 
    s.text = str1 + s.text + str2 
    } else { 
    obj.value = obj.value + str1 + str2 
    } 
    } 
    else if (typeof(obj.selectionStart) == "number") { // Opera, FireFox, Chrome 
    if (obj.selectionStart != obj.selectionEnd) { 
    var start = obj.selectionStart; 
    var end = obj.selectionEnd; 
    s = obj.value.substr(start,end-start); 
    obj.value = obj.value.substr(0, start) + str1 + s + str2 + obj.value.substr(end) 
    } else { 
    obj.value = obj.value + str1 + str2 
    } 
    } 
    }
    </script>
    Код:
    <a href="#" onClick = "javascript:tag_add(message, '[img]','[/img]');"><img title="Вставить Картинку" src="/images/image.png" width="23" height="25" border="0" alt="" /></a>
     
  5. Leony

    Leony

    Регистр.:
    18 мар 2008
    Сообщения:
    153
    Симпатии:
    25
    Если оставить message без кавычек – Опера вернёт "Uncaught exception: ReferenceError: Undefined variable: message".
    Но кавычки дело не меняют: в Опере код не срабатывает.
    А для осла достаточно и document.selection.createRange().text = ...

    У меня в 4-х браузерах alert (typeof(obj.selectionStart)); выдаёт 'undefined'.
    при textarea внутри формы и таблицы.
     
  6. AGENT131313

    AGENT131313 Забанен

    Регистр.:
    17 мар 2009
    Сообщения:
    279
    Симпатии:
    28
    я был соединил два скрипта для корректной работы. Иначе он у меня работал в ИЕ тогда нигде больше и наоборот.
     
  7. Leony

    Leony

    Регистр.:
    18 мар 2008
    Сообщения:
    153
    Симпатии:
    25
    Здесь нашёл кроссбраузерное решение.
    obj.focus(); не рекомендую добавлять: у меня из-за него в Опере скрипт перестаёт отрабатывать.