用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; } 
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");