我有这个功能:
function Nextthing (){
$("#i").hide();
$('.table').eq(1)
.find('tbody tr')
.eq(2)
.after('<tr><td colspan=10><iframe class="iframe" src="/msg.html?msgId='+$('.table')
.eq(1)
.find('tbody tr')
.eq(2)
.find('td a')
.eq(0)
.text()+'&constant=1"></iframe></td></tr>');
}
}
在提交按钮上调用它,但是当我单击按钮时,它会隐藏#i
这是一个iframe,它会插入一个新的I帧,就像函数的第二个语句所说的那样。
但是它没有传递提交动作,所以它就像没有任何事情发生但效果就是这样。
任何替代方案请删除,以便它可以通过提交操作?
答案 0 :(得分:0)
我猜这是你的提交处理程序。如果是这种情况,您可能会遇到问题,因为您要返回undefined
。所有JS函数都返回一个值。如果未明确定义该值,则返回的值为undefined
,并且由于undefined
为假,您将从事件处理程序返回false,其具有取消事件触发器的效果,即取消您的提交
如果是这种情况,只需在函数末尾插入return true;
答案 1 :(得分:0)
隐藏iframe
s中的表单(即样式为display: none
的表单)将不会提交。我相信这是防止网络钓鱼的安全措施。但是,您可以设置visibility: hidden; height: 0px; width: 0px;
,它应该可以正常工作。
修改强>
所以问题实际上不是$('#i').hide();
,而是实际更改为$('#i').remove();
。在这种情况下,您很可能希望更改在iframe
本身中运行的代码。假设某种服务器端语言能够发出HTML,在处理表单提交后,输出如下内容:
<script>
if (parent && parent.Nextthing) {
parent.Nextthing();
}
</script>
这假定您在问题中显示的Nextthing
函数是全局范围的,并包含在具有iframe
引用的页面中。