在Chrome中使用iframe目标发布跨域表单

时间:2011-07-19 23:58:35

标签: forms google-chrome jquery-validate cross-domain

我在帖子上有一个隐藏iframe的表单。表单的操作URL位于单独的域中。我在Chrome中看到表单发布的问题,但没有发送表单数据。

以下是设置:

<form action="http://anotherdomain/save" method="post" target="myiframe" id="myform">
    <!-- standard form fields here -->
    <button type="submit">Submit</button>
</form>
<iframe src="about:blank" name="myiframe" style="display: none;"></iframe>

如果用户点击该按钮,则表单应该发布到iframe中并且一切都很好。但是,如果我介绍jQuery验证,那么Chrome的功能就停止了。我的验证看起来像这样:

$("#myform").validate({
   // various options set here
   submitHandler: function(form) {
       form.submit();
       // stuff that should happen after the form submits
   }
});

在这种情况下,form.submit()会导致表单提交而不发布任何数据,只会发送标题。内容长度始终为0.这只发生在Chrome,Firefox,IE,Opera都提交正常。

更奇怪的是,如果我在页面上有另一个按钮并使用以下代码连接它,表单会正确提交。

$("myotherbutton").click(function() { $("#myform").submit(); }

我不知道为什么Chrome会以这种方式运行,如果有解决方法的话。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

请忽略这个问题。 Chrome和事件处理程序不是问题,而是在调用事件之前删除DOM元素。