我有世界上最简单的JavaScript函数:
fnSubmit()
{
window.print();
document.formname.submit();
}
这就是所谓的:
<button type="button" id="submit" onclick="fnSubmit()">Submit</button>
一切都很好,但是打印后或取消打印我收到以下错误打印对话框显示出来,:
“document.formname.submit不是一个函数”
我的形式定义如下:(显然我不是在实际的代码中使用表格名称,但你的想法)
<form name="formname" id="formname" method="post" action="<?=$_SERVER['SCRIPT_NAME']?>">
很显然,我不是想在这里做什么特别的事情,我已经在过去使用类似的方法,在世界上我是什么在这里失踪?
简而言之:你的提交按钮的ID更改为不是“提交”不同。 另外,不要在名称设置为这个值要么。
现在,一些更深入的了解。 一般的情况是, document.formname.submit
是,调用它时,将提交表单的方法。 然而,在你的榜样, document.formname.submit
是不再的方法,但DOM节点代表的按钮。
这是因为一种形式的元素都可以作为它的DOM节点的属性,通过他们的name
和id
属性。 这一措辞是有点混乱,所以这里谈到一个例子:
<form name="example" id="example" action="/">
<input type="text" name="exampleField" />
<button type="button" name="submit" onclick="document.example.submit(); return false;">Submit</button>
</form>
在这个例子中, document.forms.example.exampleField
是表示具有名称“exampleField”领域中的DOM节点。 您可以使用JS来访问它的属性,例如它的价值: document.forms.example.exampleField.value
。
然而,在这个示例中,存在称为“提交”形式的一个元件,这是提交按钮,其可与被访问document.forms.example.submit
。 它重写了前值,这是允许你提交表单的功能。
编辑:
如果重命名字段是对你不好,还有另一种解决方案。 不久写这之前,我留在网站上的问题,并得到了在一个整洁的JavaScript形式的黑客的响应:
function hack() {
var form = document.createElement("form");
var myForm = document.example;
form.submit.apply(myForm);
}
请参阅如何可靠地提交HTML表单的JavaScript? 完整的细节
鉴于您的形式同时具有id
和name
定义的,你可以使用两者之一:
随着form
标签的id
:
document.getElementById('formname').submit();
随着form
标记的name
属性:
document.forms['formname'].submit();
尝试这个:
fnSubmit()
{
window.print();
document.getElementById("formname").submit();
}
最有可能的罪魁祸首是IE的JavaScript混淆变量,ID和名称。 在源搜索的东西,分享你的表单的名称。
- 将一个输入按钮的形式中。
- 它 - 给的tabindex = “1”。
- 使其不可见使用样式=“显示:无;”。
像这样
<input type="submit" tabindex="-1" style="display:none;" />