用javascript或Jquery获取textarea文本

我有一个包含textarea的iframe,如下所示:

<html> <body> <form id="form1"> <div> <textarea id="area1" rows="15"></textarea> </div> </form> </body> </html> 

我想在父页面中获取textarea文本。 我试过这个:

 var text = $('#frame1').contents().find('#area1').val(); 

但是返回一个空string。 但是,如果我把一个值放在标签中,这个值将被成功返回:

 <textarea id="area1" rows="15">something</textarea> 

如何从包含iframe的页面获取textarea的值?

阅读<textarea>的内容:

 var text1 = document.getElementById('myTextArea').value; // plain JavaScript var text2 = $("#myTextArea").val(); // jQuery 

写入<textarea>

 document.getElementById('myTextArea').value = 'new value'; // plain JavaScript $("#myTextArea").val('new value'); // jQuery 

在这里看到DEMO JSFiddle。

不要使用.html().innerHTML

jQuery的.html()和JavaScript的.innerHTML不应该被使用,因为他们接受对textarea文本的更改

当用户在textarea上键入时, .html()不会返回types值,但是原来的一个 – 检查演示在上面举一个例子。

要从一个文本区域获得值,你只需要做一个ID

编辑

 $("#area1").val(); 

如果在文档中有多个具有相同ID的元素,那么HTML是无效的。

你可以使用val()

 var value = $('#area1').val(); $('#VAL_DISPLAY').html(value); 

用JavaScript获取textarea文本:

 <!DOCTYPE html> <body> <form id="form1"> <div> <textarea id="area1" rows="5">Yes</textarea> <input type="button" value="get txt" onclick="go()" /> <br /> <p id="as">Now what</p> </div> </form> </body> function go() { var c1 = document.getElementById('area1').value; var d1 = document.getElementById('as'); d1.innerHTML = c1; } 

http://jsfiddle.net/PUpeJ/3/

HTML:

 <html> <body> <textarea id="mytext"></textarea> <body> </html> 

jQuery的:

 var myText = $("#mytext").val(); 

普通JavaScript:

 var myText = document.getElementById('mytext').value; 

尝试.html()而不是.val():

 var text = $('#frame1').contents().find('#area1').html(); 

正如@Darin Dimitrov所说,如果它不是在同一个域上的iframe,那么它是不可能的,如果是,检查$("#frame1").contents()返回所有它应该,然后检查文本框是否发现:

$("#frame1").contents().find("#area1").length应该是1。

编辑

如果当你的textarea是“空的”空string返回,当它有一些文本input文本返回,那么它是完美的工作! 当textarea为空时 ,返回一个string!

编辑2好的。 这里有一个方法,它不是很漂亮,但它的工作原理:

在iframe之外,您将访问textarea,如下所示:

 window.textAreaInIframe 

并在iframe中(我假设有jQuery)在文档中准备好了这个代码:

 $("#area1").change(function() { window.parent.textAreaInIframe = $(this).val(); }).trigger("change");