javascript表单提交问题

时间:2009-09-23 12:08:24

标签: javascript

我有一种表格,用户可以点击预览按钮或保存按钮,两个按钮都会将数据发送到不同的位置。

以下是相关代码:

prevAction = location.href;
document.getElementById('preview').value='true';
document.getElementById('form1').target='_blank';
document.getElementById('form1').action = 'http://www.xxx.com/do/preview';
document.getElementById('form1').submit();
document.getElementById('form1').target='';
document.getElementById('preview').value='';
document.getElementById('form1').action = prevAction;

现在它可以与99.9%的用户一起使用,但到目前为止只有2个用户抱怨它不适用于他们。其中一个是使用mac并说它在safari和firefox中都不起作用。当他点击预览时,表单数据似乎没有发布,如果他们点击保存就打到预览,表单数据也不会通过。你们可以告诉我这里我做错了什么。

还有一件事可能是相关的..我的mootools被加载到头部但是这段代码没有使用它..这会产生影响吗?

3 个答案:

答案 0 :(得分:1)

如果提交网址和预览网址都在同一个javascript安全沙箱中。然后在预览的情况下:您可以只打开一个新窗口,而不是提交表单。然后在新窗口中从此窗口访问数据以显示预览。

修改

您真正的问题是浏览器不接受'form'标记的'target'属性。这是一个已弃用的属性。这仅适用于TF(Transitional& Frameset)DTD。但它不适用于严格的DTD。

您可以做的事情:将您的DTD更改为TF并希望获得最佳效果。

或:您可以实施上述解决方案。

答案 1 :(得分:0)

为了防止该用户环境中出现隐藏错误,您可以添加一个捕获错误的onerror处理程序,并通过AJAX将其记录下来以查找错误。有关示例代码,请参阅this question

Safari不支持此功能,但Firefox支持。

答案 2 :(得分:0)

这可能与这些ChromeSafari错误相关,其中带有target="_blank"的FORM并不总是按预期工作。