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

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

  • rider-sx

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

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


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

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

    Spritz 9 июля 2009 г. 9: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="post" action="post.php">
    <fieldset>

    <a href="#" title="b" onclick="return insert_text('','')"><img src="img/bbcode/b.png" alt="" /></a>

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

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

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

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

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


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

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

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

    Spritz 9 июля 2009 г. 10: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&&this.end>this.start)? this.target.value.substring(this.start,this.end): "";
    }

    TextAreaSelectionHelper.prototype.setSelectedText=function(text, secondtag) {
    if(this.iesel) {
    if(typeof(secondtag)=="string") {
     var l=this.iesel.text.length;
        this.iesel.text=text+this.iesel.text+secondtag;
     this.iesel.moveEnd("character", -secondtag.length);
      this.iesel.moveStart("character", -l);  
    } else {
     this.iesel.text=text;
    }
      this.iesel.select();
    } else if(this.start>=0&&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)=="string") {
      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)=="string")? secondtag: "");
    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)!="undefined") {
      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("textarea"));
    }


    <a  class="bold" href='javascript: text.setSelectedText("", "")'>B</a>
    Спустя 208 сек.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

    onClick='javascript:
    нахер тут "javascript: "?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

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

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


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

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

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

    phpdude, я понимаю когда <a href="javascript:alert();">, но когда в онклик!
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

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

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


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

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

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

    источились клавиши?))
    https://smappi.org/ - платформа по созданию API на все случаи жизни

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