Javascript remove停止我在iframe内表单中提交的操作
可能重复:Javascript remove停止我在iframe内表单中提交的操作,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,可能重复: 我有这个功能: 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)
我有这个功能:
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”).hide();
$('.table').eq(1)
.find('tbody tr')
.eq(2)
.在('')之后;
}
}
它在submit按钮上被调用,但当我单击该按钮时,它会隐藏作为iframe的#I
,并插入一个新的I框架,如函数的第二条语句所示
但是它没有通过submit操作,所以除了效果之外什么都没有发生,仅此而已
请选择删除,以便它可以通过提交操作?我猜这是您的提交处理程序。如果是这种情况,您可能会遇到问题,因为您返回的是
undefined
。所有JS函数都返回一个值。如果未明确定义该值,则返回的值为未定义
,并且由于未定义
为falsy,您将从和事件处理程序返回false,其效果是取消事件触发器,即取消提交
如果是这种情况,只需插入一个
返回true隐藏的iframe
s中函数末尾的code>表单(即样式为显示:无的表单)将不会提交。我相信这是一种防止网络钓鱼的安全措施。但是,您可以设置可见性:隐藏;高度:0px;宽度:0px代码>并且它应该可以工作
编辑:
因此问题实际上并不在于$('#i').hide()代码>,但实际上当它更改为$('#i')。remove()代码>。在这种情况下,您很可能希望更改在iframe
本身中运行的代码。假设某种服务器端语言能够发出HTML,在处理表单提交后,输出如下内容:
<script>
if (parent && parent.Nextthing) {
parent.Nextthing();
}
</script>
if(父项和父项下一项){
parent.Nextthing();
}
这假设您在问题中显示的Nextthing
函数是全局范围的,并且包含在包含iframe
引用的页面中。浏览器报告的任何错误?否,无错误,根本不通过提交不能,因为我在iframe中处理操作,所以不能在iframe中进行隐藏的JSFIDLDLESubmit操作?提交在iframe中是的,当他单击该提交时,它将隐藏该iframe并加载下一个iframe,但提交的数据没有通过,只是效果有效,提交编号返回true代码>不起作用:(,我的想法适用于hide()
,但我想将其全部删除,而不仅仅是隐藏它:(它使用的是hide
,它不使用remove
…我想要使用remove…好的,所以示例代码说hide
,但这不是问题所在。当问题和代码不一致时,很难提供帮助。但是,我猜这可能是一个类似的问题;当您调用remove
iframe时
已从DOM中删除。为什么浏览器会提交一个不再存在的表单?对,那么我可以使用什么替代方案来提交并执行我的函数?删除#i
并在函数的第二行添加iframe如果您可以控制在iframe
中运行的代码,您可以提交后出现的页面中的所有函数。因此,在您的iframe
中,假设Nextthing()
是一个全局范围的函数,则有调用parent.Nextthing();
的代码。是的,我有控制权,我如何才能做到这一点?