在提交表单后的以下代码中,我需要保持在同一页面上,所以我说我的目标是iframe。
但是在得到回复后我需要填充文本区域,我该怎么办呢。下面的代码出了什么问题?
<script>
//After I get a response
$("#result").html("This is your result"); //Textarea not populated
</script>
<form method="POST" enctype="multipart/form-data" id="contentform" action="/dg/execute_model/" target="upload_target" onsubmit="return validate();">{% csrf_token %}
<b>
<table class="cat-tab" cellspacing="0" cellpadding="0" border="0">
<tr>
<td><font>*</font>Test data</td>
<td><input type="file" name="test_file" id="test_file" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Build" id="addbtn" /></td>
</tr>
</table>
</form>
<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;">
<b><br>Result:<br><br></b>
<textarea rows="20" cols="100" name="result" id="result" ></textarea>
</iframe>
答案 0 :(得分:1)
试试这个: -
$('#upload_target').contents().find('#result').html('This is your result');
答案 1 :(得分:1)
这对我有用:
$( "#result", $("#upload_target").contents() ).val("This is your result.");
答案 2 :(得分:1)
为什么查询$('#result')
在您的示例中不起作用
默认情况下,jQuery查询当前document
对象的DOM树。由于iframe
元素实际上嵌入了一个单独的window
对象和一个单独的document
对象,因此textarea不在您当前查询的范围内且找不到。
如何正确查询$('#result')
这意味着为了遍历iframe
嵌入的DOM,我们首先需要访问iframe的window
和document
对象。一种安全且跨浏览器的方法是使用window
属性访问iframe的.contentWindow
,然后使用.document
的{{1}}属性。
例如:
window