Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   JS, текст из <textarea> (https://forum.antichat.xyz/showthread.php?t=20365)

Abra 10.06.2006 16:55

JS, текст из <textarea>
 
Короче есть страничка со скриптом.
Код:

<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, но чем тогда заменить?...

Ch3ck 10.06.2006 18:30

Вот держи, всё сделал...
<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>

NaX[no]rT 10.06.2006 18:39

У тебя он не работает в опере и в фф, потому что innerText не доступен для тега <textarea>. Всё так же как и в input измени строчку
Код:

alert(post.text.innerText);
на
Код:

alert(post.text.value);
И не возникнет больше никаких проблем)
UPD: гг) пока печатал и чай делал Dr.Check опередил )))

Abra 10.06.2006 20:27

бля че-то я туплю сегодня... я ж себе BB коды в ленту новостей через value вставлял =))) спасибо обоим =)

Abra 10.06.2006 21:37

Хм... еще один вопрос - вот допустим если я данные из textarea вывожу алертом, то все ок - переносы строк автоматически вставляются.
А если мне нужно передать эти данные методом get в некий фрейм, т.е. вот так:
Код:

frame1.location.href="index.php?text="+post.text.value;
переносы строк игнорируются. Текст вставляется в адресную строку таким образом text=строка1строка2строка3
.
нет ли в JS функции на подобие nl2br() в php, чтоб она вставляла теги <br> в места перенос строк?

Trinux 10.06.2006 22:21

2 Abra
подобные данный не передаются GET`ом. Юзай POST.
А насчет скрипта - я вообще советую юзать DOM

Дикс 11.06.2006 20:53

Trinux
ты всем советуешь этот ДОМ.
дай пожалуйста ссылку на статью где ясно и понятно описаны принципы работы с этим домом и без всякой воды.

Trinux 11.06.2006 23:17

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 

как у автора. Да, работать это может и работает, но это не по спецификации...


Время: 23:33