【发布时间】:2015-06-24 22:30:20
【问题描述】:
我有一个“父”页面,它使用以下代码从同一域的不同页面中提取表单。我不能直接将表单放在“父级”上是有原因的。
<script type="text/javascript">
jQuery("#ai_temp_profile_edit").load(
"https://example.com/form/ #profile-edit-form",
function() {}
).hide().fadeIn(1000);
</script>
拉进来的表格是这样的:
<form action="https://example.com/form/" method="post" id="profile-edit-form" class="standard-form base" target="hiddenFrame">
<label for="field_1">Name</label>
<input id="field_1" name="field_1" type="text" value="Joey-Jojo Jr. Shabadoo">
<input type="submit" name="profile-group-edit-submit" id="profile-group-edit-submit" value="Save Changes " />
<input type="hidden" name="field_ids" id="field_ids" value="1" />
<input type="hidden" id="_wpnonce" name="_wpnonce" value="a62f8d5fec" />
<input type="hidden" name="_wp_http_referer" value="/form/" />
</form>
单击“提交”时,https://example.com/form/ 会在隐藏的 iframe 中打开,并且用户名会正确保存。这一切都很好。
我希望通过 jquery 更新当前加载的“父”页面上的用户名,以便用户有一些即时的视觉反馈,表明名称更改已经发生。
我的方法是在单击“提交”时尝试从“field_1”输入中取出值,然后将该变量传递到父页面中 id 为“display_name”的 div。
$(document).ready(function(){
function nameUpdate(){
$("#profile-group-edit-submit").click(function () {
var updateName = $("#field_1").val();
$("#display_name").text(updateName);
});
}
nameUpdate();
});
我也试过添加
window.parent.
在#display_name 选择器部分之前,它没有改变任何东西。
我在同一页面上的另一个按钮/div 组合上使用了这种方法,它可以工作,不同之处在于该特定按钮位于 iframe 中,而不是由 jquery 加载。所以我猜我的问题与这个事实有关。
我已经用谷歌搜索了,但是对于如何表达我的问题、要查找的内容等已经没有什么想法了......
任何帮助将不胜感激。谢谢!
编辑:为清楚起见,带有 id #display_name 的 div 不会更新。
【问题讨论】:
-
为了更清楚起见,查看源代码时,实际上没有任何表单元素出现。只有原始的 jquery 代码是可见的。我直接在页面上放置了一个具有相同元素的“人造表单”,并且每种方法(包括原始方法)都可以正常工作。
-
我也尝试将最后一段代码移动到与真实表单相同的页面,但这也没有解决任何问题。
标签: javascript jquery html forms iframe