JS, текст из <textarea>

Discussion in 'PHP' started by Abra, 10 Jun 2006.

  1. Abra

    Abra Member

    Joined:
    17 Sep 2005
    Messages:
    278
    Likes Received:
    51
    Reputations:
    29
    Короче есть страничка со скриптом.
    Code:
    <html>
    <head>
      <title>Untitled web-page</title>
    </head>
    <body>
    <form action"" name="post">
    <textarea name="text" rows="5" cols="20">
    </textarea>
    </form>
    
    <script>
    
    timerID=setTimeout("save1()", 5000)
    
    function save1() {
    alert(post.text.innerText);
    }
    </script>
    
    </body>
    </html>
    Как видно скрипт через 5 секунд после загрузки должен вывести то что написано в <textarea> ввиде алерта.
    Так вот почему-то эта фигня нормально работает только на ИЕ. При загрузке через фаерфокс, в алерте post.text.innerText оказывается не заданым (т.е. undefined), В опере тоже самое, т.е. выводится пустой алерт.
    Кто нибудь знает как заставить скрипт работать в фф и опере? Я думаю что они просто не реагируют на значение innertext в textarea, но чем тогда заменить?...
     
  2. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,148
    Reputations:
    430
    Вот держи, всё сделал...
    <html>
    <head>
    <title>Untitled web-page</title>
    </head>
    <body>
    <form action"" name="post">
    <textarea name="text" rows="5" cols="20">
    </textarea>
    </form>

    <script>

    timerID=setTimeout("save1()", 5000)

    function save1() {
    alert(post.text.value);
    }
    </script>

    </body>
    </html>
     
    1 person likes this.
  3. NaX[no]rT

    NaX[no]rT Members of Antichat

    Joined:
    3 Sep 2005
    Messages:
    489
    Likes Received:
    201
    Reputations:
    202
    У тебя он не работает в опере и в фф, потому что innerText не доступен для тега <textarea>. Всё так же как и в input измени строчку
    Code:
    alert(post.text.innerText);
    на
    Code:
    alert(post.text.value);
    И не возникнет больше никаких проблем)
    UPD: гг) пока печатал и чай делал Dr.Check опередил )))
     
    _________________________
    1 person likes this.
  4. Abra

    Abra Member

    Joined:
    17 Sep 2005
    Messages:
    278
    Likes Received:
    51
    Reputations:
    29
    бля че-то я туплю сегодня... я ж себе BB коды в ленту новостей через value вставлял =))) спасибо обоим =)
     
  5. Abra

    Abra Member

    Joined:
    17 Sep 2005
    Messages:
    278
    Likes Received:
    51
    Reputations:
    29
    Хм... еще один вопрос - вот допустим если я данные из textarea вывожу алертом, то все ок - переносы строк автоматически вставляются.
    А если мне нужно передать эти данные методом get в некий фрейм, т.е. вот так:
    Code:
    frame1.location.href="index.php?text="+post.text.value;
    переносы строк игнорируются. Текст вставляется в адресную строку таким образом text=строка1строка2строка3
    .
    нет ли в JS функции на подобие nl2br() в php, чтоб она вставляла теги <br> в места перенос строк?
     
  6. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 Abra
    подобные данный не передаются GET`ом. Юзай POST.
    А насчет скрипта - я вообще советую юзать DOM
     
    _________________________
  7. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Trinux
    ты всем советуешь этот ДОМ.
    дай пожалуйста ссылку на статью где ясно и понятно описаны принципы работы с этим домом и без всякой воды.
     
  8. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    DOM - Document Object Model. Объектная модель документа. DOM был разработан W3C как API для предстваление документа (HTML страницы) и доступа ко всем ее элементом. Будь то элемент формы или просто таблица. DOM это лишь стандарт, рекомендация от W3C. Примерно так же, как и HTML, CSS и прочие. Ни один браузер не поддерживает DOM полностью и в точности к спецификации от W3C (впрочем, как и CSS). Соответственно можно легко сказать о том, что в разных браузерах поддержка DOM разная. НО! DOM Level 1 был специфицирован аж в 98 году и на данный момент IE 6+ и другие браузеры худо-бедно его поддерживают достаточно полно. Грубо говоря, если вы работает с документом через DOM API Level 1 - огромная вероятность того что скрипт будет работать во всех браузерах одинаково. DOM Level 2 был специфицирован в 2000 году, он получил ряд изменений с прошлым и улучешений. Но IE 6+ его не поддерживает. Поэтому лучше даже не пускать слюну, читая спецификацию DOM Level 2, а наслождаться простой и брутальностью DOM Level 1.

    Ну это так... общее представление. Весь интерфейс я раскладывать по полкам не стану да и это трудно в пределах одного поста. Что касается данного скрипта.

    PHP:
    alert(post.text.value);
    впринципе неверно. Получение доступа к элементу через DOM осуществляется по средствам объекта document. в DOM определены несколько способов доступа к объекстам документа. В данном случае к текстарии "text" формы "post" можно обратится следующими эквивалентными способами

    PHP:
    document.forms['post']['text']
    document.forms.namedItem("post").namedItem("text")
    document.forms.post.text
    Но никак не
    PHP:
    post.text
    как у автора. Да, работать это может и работает, но это не по спецификации...
     
    _________________________
Loading...