0

可能重复:
执行一次后停止 jquery 函数

我有这个功能:

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

它没有通过提交动作,所以它就像什么都没有发生,但效果仅此而已。

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

4

2 回答 2

0

hiddeniframe中的表单(即样式为 的表单display: none)不会提交。我相信这是防止网络钓鱼的安全措施。但是,您可以设置visibility: hidden; height: 0px; width: 0px;并且它应该可以工作。

编辑:

所以问题实际上不在于$('#i').hide();,而实际上是当它更改为$('#i').remove();. 在这种情况下,您很可能希望更改iframe本身运行的代码。假设某种能够发出 HTML 的服务器端语言,在处理完表单提交后,输出如下内容:

<script>
if (parent && parent.Nextthing) {
    parent.Nextthing();
}
</script>

这假设Nextthing您在问题中显示的功能是全局范围的,并且包含在具有iframe参考的页面中。

于 2012-10-01T19:16:34.733 回答
0

我猜这是您的提交处理程序。如果是这种情况,您可能会在返回后遇到问题undefined。所有 JS 函数都返回一个值。如果未明确定义该值,则返回的值是假的,undefined并且undefined您正在从事件处理程序返回 false,该事件处理程序具有取消事件触发器的效果,即取消您的提交

如果是这种情况,只需return true;在函数末尾插入 a

于 2012-10-01T19:08:12.900 回答