ФорумПрограммированиеPHP для идиотов → Вставка текста в Textarea

Вставка текста в Textarea

  • rider-sx

    Сообщения: 2717 Репутация: N Группа: Адекваты

    Spritz 8 июля 2009 г. 14:54, спустя 40 секунд


    http://forum.vingrad.ru/topic-55935/15.html#st_0_view_0
    Спасибо =)
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 1:37, спустя 10 часов 42 минуты 27 секунд

    что-то большие листинги и ещё не гарантируется работа в Opera. я использую:

    function insert_text(open, close)
    {

    msgfield = (document.all) ? document.all.req_message : ((document.getElementById('afocus') != null) ? (document.getElementById('afocus').req_message) : (document.getElementsByName('req_message')[0]));

    // IE support
    if (document.selection && document.selection.createRange)
    {
    msgfield.focus();
    sel = document.selection.createRange();
    sel.text = open + sel.text + close;
    msgfield.focus();
    }

    // Moz support
    else if (msgfield.selectionStart || msgfield.selectionStart == '0')
    {
    var startPos = msgfield.selectionStart;
    var endPos = msgfield.selectionEnd;

    msgfield.value = msgfield.value.substring(0, startPos) + open + msgfield.value.substring(startPos, endPos) + close + msgfield.value.substring(endPos, msgfield.value.length);
    msgfield.selectionStart = msgfield.selectionEnd = endPos + open.length + close.length;
    msgfield.focus();
    }

    // Fallback support for other browsers
    else
    {
    msgfield.value += open + close;
    msgfield.focus();
    }

    return false;
    }


    смайлы и bbcode вставляются так:

    <form method=&quot;post&quot; action=&quot;post.php&quot;>
    <fieldset>

    <a href=&quot;#&quot; title=&quot;b&quot; onclick=&quot;return insert_text(&#39;&#39;,&#39;&#39;)&quot;><img src=&quot;img/bbcode/b.png&quot; alt=&quot;&quot; /></a>

    <a href=&quot;#&quot; onclick=&quot;return insert_text(&#39;&#39;, &#39; :) &#39;);&quot; ><img src=&quot;img/smilies/smile.png&quot; alt=&quot;:)&quot; /></a>

    <textarea name=&quot;req_message&quot; rows=&quot;7&quot; cols=&quot;75&quot;></textarea>
    </fieldset>
    <input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot; />
    </form>

    ιιlllιlllι унц-унц
  • Mr.Pihto

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 9 июля 2009 г. 2:06, спустя 29 минут 19 секунд


    поиск кстате не рулит,не работает чото(

    нефига. не пробовал как сделать bb коды ?
  • monro

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 9 июля 2009 г. 2:10, спустя 3 минуты 39 секунд

    раз уже зашел разговор про BB, то как организовать функцию обработки BB кодов?
    для вставки текста мне понравилась вот такая фуккция:

    function TextAreaSelectionHelper(obj) {
    this.target=obj;
    this.target.carretHandler=this; //ссылка самого на себя для текстового поля

    this.target.onchange=_textareaSaver;
    this.target.onclick=_textareaSaver;
    this.target.onkeyup=_textareaSaver;
    this.target.onfocus=_textareaSaver;
    if(!document.selection) this.target.onSelect=_textareaSaver; //для Мозиллы

    this.start=-1;
    this.end=-1;
    this.scroll=-1;
    this.iesel=null; //для ИЕ
    }

    TextAreaSelectionHelper.prototype.getSelectedText=function() {
     return this.iesel? this.iesel.text: (this.start>=0&amp;&amp;this.end>this.start)? this.target.value.substring(this.start,this.end): &quot;&quot;;
    }

    TextAreaSelectionHelper.prototype.setSelectedText=function(text, secondtag) {
    if(this.iesel) {
    if(typeof(secondtag)==&quot;string&quot;) {
     var l=this.iesel.text.length;
        this.iesel.text=text+this.iesel.text+secondtag;
     this.iesel.moveEnd(&quot;character&quot;, -secondtag.length);
      this.iesel.moveStart(&quot;character&quot;, -l);  
    } else {
     this.iesel.text=text;
    }
      this.iesel.select();
    } else if(this.start>=0&amp;&amp;this.end>=this.start) {
       var left=this.target.value.substring(0,this.start);
       var right=this.target.value.substr(this.end);
    var scont=this.target.value.substring(this.start, this.end);
    if(typeof(secondtag)==&quot;string&quot;) {
      this.target.value=left+text+scont+secondtag+right;
      this.end=this.target.selectionEnd=this.start+text.length+scont.length;
      this.start=this.target.selectionStart=this.start+text.length;    
    } else {
         this.target.value=left+text+right;
      this.end=this.target.selectionEnd=this.start+text.length;
      this.start=this.target.selectionStart=this.start+text.length;
    }
    this.target.scrollTop=this.scroll;
    this.target.focus();
    } else {
      this.target.value+=text + ((typeof(secondtag)==&quot;string&quot;)? secondtag: &quot;&quot;);
    if(this.scroll>=0) this.target.scrollTop=this.scroll;
    }
    }

    TextAreaSelectionHelper.prototype.getText=function() {
    return this.target.value;
    }
    TextAreaSelectionHelper.prototype.setText=function(text) {
    this.target.value=text;
    }

    function _textareaSaver() {
    if(document.selection) {
      this.carretHandler.iesel = document.selection.createRange().duplicate();
    } else if(typeof(this.selectionStart)!=&quot;undefined&quot;) {
      this.carretHandler.start=this.selectionStart;
    this.carretHandler.end=this.selectionEnd;
    this.carretHandler.scroll=this.scrollTop;
    } else {this.carretHandler.start=this.carretHandler.end=-1;}
    }
    ////////////////////////////////////////////////////////////////////////////////
    onload = function () {
    text = new TextAreaSelectionHelper(document.getElementById(&quot;textarea&quot;));
    }


    <a  class=&quot;bold&quot; href=&#39;javascript: text.setSelectedText(&quot;&quot;, &quot;&quot;)&#39;>B</a>
    {+++208+++}


    поиск кстате не рулит,не работает чото(

    нефига. не пробовал как сделать bb коды ?

    сам то нашел чета полезное в том что ты мне линкнул? я - нет, мож плохо искал но нету там ничо
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 3:03, спустя 52 минуты 54 секунды

    поиск кстате не рулит,не работает чото(

    реально по форуму поиск не пашет
  • welder

    Сообщения: 2947 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 4:16, спустя 1 час 13 минут 28 секунд

    поиск если честно уг
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 4:46, спустя 29 минут 28 секунд

    да, поиск гавно
    все умрут, а я изумруд
  • Mr.Pihto

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 9 июля 2009 г. 7:13, спустя 2 часа 27 минут 19 секунд

    в зависимости от запроса)
  • rider-sx

    Сообщения: 2717 Репутация: N Группа: Адекваты

    Spritz 9 июля 2009 г. 7:34, спустя 20 минут 48 секунд


    в зависимости от запроса)
    пока что похуй какой запрос все равно не пашет =) {+++96+++} а не сорри уже работает =)
  • monro

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 9 июля 2009 г. 14:12, спустя 6 часов 38 минут 15 секунд

    раз мы уже пошли по bb кодам, тогда подскажите тогда как мне организовать через
    prompt
    вставку текста, типо вставка url ссылки? {+++42+++} собсно код
    <img src=&quot;img/insert_link.png&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;Ссылка&quot;>
    {+++108+++} код который работает
    <img src=&quot;img/bold.png&quot; alt=&quot;Жирным&quot; width=&quot;16&quot; height=&quot;16&quot; onClick=&#39;javascript: text.setSelectedText(&quot;&quot;, &quot;&quot;)&#39;>

    и я не пойму куда тут prompt тулить
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 14:26, спустя 14 минут 3 секунды

    onClick=&#39;javascript:
    нахер тут &quot;javascript: &quot;?
    adw/0
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 14:27, спустя 56 секунд


    onClick=&#39;javascript:
    нахер тут &quot;javascript: &quot;?
    ыыы ржака. есть такая хуйня
    Сапожник без сапог
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 14:31, спустя 4 минуты 26 секунд

    phpdude, я понимаю когда &lt;a href=&quot;javascript:alert();&quot;>, но когда в онклик!
    adw/0
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 14:33, спустя 1 минуту 30 секунд


    phpdude, я понимаю когда &lt;a href=&quot;javascript:alert();&quot;>, но когда в онклик!
    а ие6 понимает в любом случае, приходится мириться с неадекватностью печатных изданий в окторых такие уебанские примеры пишут {+++15+++} пора клаву менять, руки хуйню на этой писать стали
    Сапожник без сапог
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 9 июля 2009 г. 14:35, спустя 2 минуты 5 секунд

    источились клавиши?))
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!