我有一个包含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();
但是返回一个空字符串。但是,如果我在标记中放置一个值,则会成功返回此值:
<textarea id="area1" rows="15">something</textarea>
如何从包含iframe的页面中获取textarea的值?
答案 0 :(得分:63)
<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
.html()
或.innerHTML
!.html()
和JavaScript的.innerHTML
,因为他们不会对textarea的文本进行更改。
当用户在textarea上输入内容时,.html()
将不会返回键入的值,而是返回原始值 - 请查看上面的演示小提示示例。
答案 1 :(得分:18)
要从具有id的textarea中获取值,您只需要
的被修改强> 的
$("#area1").val();
如果您在文档中有多个具有相同ID的元素,则HTML无效。
答案 2 :(得分:7)
您可以使用val()
。
var value = $('#area1').val();
$('#VAL_DISPLAY').html(value);
答案 3 :(得分:5)
使用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;
}
答案 4 :(得分:1)
尝试.html()而不是.val():
var text = $('#frame1').contents().find('#area1').html();
答案 5 :(得分:1)
正如@Darin Dimitrov所说,如果它不是同一个域上的iframe它是不可能的,如果是,检查$("#frame1").contents()
是否返回它应该是什么,然后检查文本框是否找到:< / p>
$("#frame1").contents().find("#area1").length
应为1。
修改强>
如果当你的textarea为“空”时,会返回一个空字符串,当它输入一些文本时会返回该文本,那么它是完美的!当textarea 为空时,会返回空字符串!
编辑2 好。这里有一种方式,它不是很漂亮,但它有效:
在iframe之外,您将访问textarea,如下所示:
window.textAreaInIframe
在文件准备好的iframe(我假设有jQuery)里面放了这段代码:
$("#area1").change(function() {
window.parent.textAreaInIframe = $(this).val();
}).trigger("change");
答案 6 :(得分:1)
%100解决方案:$('textarea [name =“ areaname”]')。val()
答案 7 :(得分:1)
试试这个:
var info = document.getElementById("area1").value; // Javascript
var info = $("#area1").val(); // jQuery