如何在javascript中查找/检测页面中的任何文本区域

问题描述 投票:0回答:4

(document.getElementById('textarea').length > 0) 不起作用。除了这个还有谁知道吗?

这是我之前问题中未得到解答的场景。我有富文本编辑器(Openwysiwyg),当我转到放置文本区域的特定页面时,它会加载到文本区域中。该函数使用textarea id来标识textarea,以将其替换为富文本编辑器(RTE)。现在调用此函数的脚本位于页面的标题部分。我选择了一个用于发送电子邮件的下拉选项,因此我的电子邮件文本区域出现了。为 RTE 添加此脚本后,我的电子邮件文本区域将被 RTE 取代,我可以发送格式化的电子邮件。所以这在 Firefox 中工作得非常好。在 IE7 中,RTE 甚至在我选择电子邮件下拉选项之前就出现了,这使得整个页面变得混乱。当我选择电子邮件下拉选项时,我只看到正常的文本区域,而 RTE 仍然位于页面顶部。

javascript internet-explorer-7 textarea
4个回答
12
投票
document.getElementsByTagName('textarea').length > 0

3
投票

你可以使用(注意复数形式!)

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

您也可以使用 jQuery:

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

编辑: 我曾经遇到过类似的问题。我正在使用 fckedit,当我尝试读取文本编辑的值时 (

document.getElementById('blabla').value
),我得到了 null,即使富文本编辑也确实在屏幕上显示了一些内容。

事实证明,fckedit API 在 textarea 顶部打开一个新元素,并且只有当您从页面导航时,才会将其内部数据(如果我没有记错的话,位于 iframe 上)同步到原始 textarea 中。

这个故事的寓意:如果您正在使用一些富文本 API - 使用它的 API 来查询“文本区域”的状态。希望这对您有帮助,因为我不知道您正在使用的库。

PS:我实际上使用了

$("blabla").val()
...这也是 JavaScript ...由于某种原因,人们认为 jQuery 不是 javascript。这是为什么?


1
投票

纯 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> 

0
投票

由于 openWYSIWYG 会动态生成

iframe
,因此获取/设置其内容并不那么简单。

我目前正在努力更改源中的这些设置。一旦我收到更改,我将在此处发布链接。

© www.soinside.com 2019 - 2024. All rights reserved.