PDA

Просмотр полной версии : JS, текст из <textarea>


Abra
10.06.2006, 16:55
Короче есть страничка со скриптом.
<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.

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

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

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