2010-01-04 2 views
1

(document.getElementById ('textarea'). Length> 0) не работает. Кто-нибудь знает что-то еще, кроме этого?Как найти/обнаружить любое текстовое поле на странице в javascript

Будет

Вот сценарий из моего предыдущего вопроса, который был без ответа. У меня есть редактор Rich Text Editor (Openwysiwyg), который загружается в textarea, когда я перехожу на эту страницу, где размещается текстовая область. Функция использует идентификатор textarea для идентификации textarea, чтобы заменить его Rich Text Editor (RTE). Теперь скрипт для вызова этой функции находится в заголовочной части страницы. Я выбираю раскрывающийся список для отправки электронной почты, поэтому появляется текстовое поле для электронной почты. С этим сценарием, добавленным для RTE, моя текстовая область для электронной почты заменяется RTE, и я могу отправлять отформатированные электронные письма. Так что это прекрасно работает в Firefox. С IE7 RTE появляется даже до того, как я выберет раскрывающийся список для электронной почты, и это заставит всю страницу испортиться. Когда я выбираю раскрывающийся список для электронной почты, я просто вижу нормальную текстовую область и RTE, все еще сидящую вверху страницы.

+0

OK, не уверен Я все еще понял - когда вы говорите: «Я выбираю раскрывающийся список для отправки электронной почты, поэтому появляется текстовое поле для отправки по электронной почте», это уже часть текста (но скрытая), или она динамически создается при выборе выпадающее меню? Похоже, что RTE работает, скрывая текстовое поле и заменяя его iframe, поэтому, если текстовая область уже скрыта и становится видимой, когда вы выбираете из раскрывающегося списка, это частично объясняет поведение, которое вы видите в IE. Извините, возможно, вам нужно будет увидеть фактический код, чтобы помочь с решением, но здесь слишком много потенциальных факторов. –

+0

У вас в значительной степени было то, что я собирался сказать. textarea скрыта. Он отображается при выборе раскрывающегося списка. Почему IE не ведет себя как firefox в таком сценарии javascript, вы думаете? – yogsma

ответ

9

document.getElementsByTagName ('текстовое поле') длина> 0

1

Вы можете использовать (обратите внимание на форму множественного числа!)

var e = document.getElementsByTagName("textarea"); 

Вы можете использовать JQuery, а также:.

$("textarea").each(function() { /* ... */ }); 

EDIT: Я столкнулся с аналогичной проблемой один раз. Я использовал fckedit, и когда я пробовал читать значение моего textedit (document.getElementById('blabla').value), я получал нулевое значение, даже жесткое редактирование текстового текста было ddefinetly показом чего-то на экране.

Оказывается, API-интерфейс fckedit открывает новый элемент поверх textearea, и только когда вы перемещаетесь со страницы, она синхронизирует внутренние данные (которые находятся на iframe, если я не ошибаюсь) в оригинале текстовое поле.

Мораль истории: если вы используете некоторый richtext API - используйте его API для запроса статуса вашего «текстового поля». Надеюсь, это поможет вам, поскольку я не знаю библиотеку, которую вы используете.

PS: Я фактически использовал $("blabla").val() ... который также является JavaScript ... по какой-то причине люди думают, что jQuery не является javascript. Почему это?

+3

Не понимаю, почему люди дают ответы на Javascript, говоря, что вы также можете использовать JQuery. Согласился с его хорошей библиотекой и т. Д., Почему излишне сказать: «Вы также можете использовать JQuery», когда это можно решить с помощью обычного Javascript. – Zaje

+0

Я просто обучаюсь другим вариантам. Если бы я знал Прототип, я бы привел пример. – elcuco

+0

Спасибо, ребята, но это мне не помогло. Я попробовал это, но javascript, который включен после предложения if, в котором я проверяю для textarea, никогда не вызывается. – yogsma

0

Поскольку openWYSIWYG генерирует iframe на лету, его не так просто получить/установить его содержимое.

В настоящее время я работаю над изменением этих параметров в источнике. опубликует здесь ссылку, как только я получу изменения.

0

Pure JavaScript (Вы можете использовать этот код)

textarea является HTML элемент тега

JavaScript:

if(document.getElementsByTagName('textarea').length > 0) { 

} 

HTML КОД:

<div class="flavor"> 

    <div class="value"> 

    <textarea name="name" rows="8" cols="80"></textarea> 

    </div> 

</div> 

<script type="text/javascript"> 

    var flavorbox = document.getElementsByClassName('flavor')[0] 
          .getElementsByClassName('value')[0] 
          .getElementsByTagName('textarea').length; 

    alert(flavorbox); 

</script> 
Смежные вопросы