【发布时间】:2014-09-14 16:37:40
【问题描述】:
客户希望为他们的站点范围订阅应用程序调整现有表单。由于网站的布局方式,实现这一点的最简单方法是让 iframe 将现有表单拉入新页面。但是,当表单验证触发失败时,这会导致现有行为出现一些问题。
我在页面中有一个 iframe:
<iframe class="contactForm" frameborder="0" height="1720px"
src="/path/to/contact.html" width="904px”>
<p>Your browser does not support frames.</p>
</iframe>
此函数在提交事件时触发:
$('form#ContactForm').bind('submit', function(event){
if ( !validation ) {
var error ="Please fill out the entire form";
$('#formErrors').text(error);
$('html,body').animate({
scrollTop: $("#formErrors").offset().top},
'fast');
}
} else {
//execute ajax submission here
}
}
执行。如果表单验证失败,则表单页面顶部的 div 元素将填充错误文本,并动画快速滚动动作。但是,由于 iframe 设置的高度足以容纳原始表单页面而无需任何滚动,因此不会执行此滚动操作。
有什么方法可以让这个滚动动作在窗口中工作 IF 和 ONLY IF 这个脚本加载到 iframe 中,同时保持现有的行为原始页面?
【问题讨论】:
-
应该显示错误信息的div是在iframe还是父页面?
-
@Khalid,它在 iframe 中。
-
window.top == window只有在脚本从主窗口(不在 iframe 中)执行时才应该测试为真
标签: javascript jquery html iframe