删除在iframe内停止我在表单中提交的操作

时间:2012-10-01 19:02:08

标签: javascript jquery jquery-ui

  

可能重复:
  stop the jquery function after one execution

我有这个功能:

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帧,就像函数的第二个语句所说的那样。

但是它没有传递提交动作,所以它就像没有任何事情发生但效果就是这样。

任何替代方案请删除,以便它可以通过提交操作?

2 个答案:

答案 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引用的页面中。