表单未使用 JS 提交

2023-11-28

我有世界上最简单的 JavaScript 函数:

fnSubmit()
{
  window.print();
  document.formname.submit();
}

这是由以下人员调用的:

<button type="button" id="submit" onclick="fnSubmit()">Submit</button>

一切都很好,打印对话框显示,但是在打印或取消打印后,我收到以下错误:

“document.formname.submit 不是一个函数”

我的表单定义如下:(显然我没有在实际代码中使用 formname 但你明白了)

<form name="formname" id="formname" method="post" action="<?=$_SERVER['SCRIPT_NAME']?>">

显然我并不想在这里做任何特别的事情,而且我过去也使用过类似的方法,我到底错过了什么?


简而言之:改变id将提交按钮更改为与“提交”不同的内容。另外,不要设置name到这个值。

现在,一些更深入的见解。一般情况是这样的document.formname.submit是一种方法,调用时将提交表单。然而,在你的例子中,document.formname.submit不再是一个方法,而是代表按钮的 DOM 节点。

发生这种情况是因为表单的元素可以通过其 DOM 节点的属性来使用name and 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是一个 DOM 节点,表示名为“exampleField”的字段。您可以使用 JS 访问其属性,例如其值:document.forms.example.exampleField.value.

然而,在这个例子中,表单中有一个名为“submit”的元素,这是提交按钮,可以通过以下方式访问:document.forms.example.submit。这将覆盖以前的值,该值是允许您提交表单的函数。

EDIT:

如果重命名字段不适合您,还有另一种解决方案。在写这篇文章之前不久,我在网站上留下了这个问题,并以简洁的 JavaScript hack 的形式得到了回复:

function hack() {
  var form = document.createElement("form");
  var myForm = document.example;
  form.submit.apply(myForm);
}

See 如何使用 JavaScript 可靠地提交 HTML 表单?欲了解完整详情

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表单未使用 JS 提交 的相关文章

随机推荐

  • 如何在基于 Ubuntu 的 Linux 上安装 SIGAR?

    我在一个带有 Maven 和 Spring 的 java 项目中使用 SIGAR 我的 Maven 依赖项和 Maven 存储库包含在我的pom xml文件 如以下链接所述 http mavenhub com mvn thirdparty
  • 如何在 ASP.NET Core 中的子域之间共享会话?

    我有一个网站 其中包含 ali sarahah com 等子域 但如果用户从www sarahah com然后去阿里 sarahah com会话未保存 搜索后我添加了以下内容Startup cs app UseCookieAuthentic
  • Spring 3控制器异常处理程序实现问题

    我希望实现一个 ExceptionController 来处理在执行其他控制器方法时引发的异常 我没有在我的应用程序上下文中指定任何 HandlerExceptionResolver 因此根据API文档应启动 AnnotationMetho
  • 使用 ASP.NET MVC 3 和 Razor 视图进行用户跟踪

    在 ASP NET MVC 3 中使用 Razor 视图时 在整个网站中实现用户跟踪的最佳方法是什么 在 webforms 中 我会在母版页中放置一些代码来使用 cookie 并将人们访问的网站上的每个 url 记录到数据库中 但我不确定在
  • 如何使用 Type Script 中的反射获取实现某个基类的子类?

    我们可以像 C 一样在 Type Script 中使用反射来获取实现某个基类的类列表吗 例如 假设 Snake 和 Horse 实现了基类 Animal 现在我需要获取实现 Animal 的类 类似于我们在 C 中可以做的事情 C 等效代码
  • heroku Postgres 错误 - 运算符不存在没有时区 = 整数的时间戳

    我在我的控制器中使用以下代码 monday Time now at beginning of week friday 5 days since monday 1 second sent emails ContactEmail all con
  • 如何让 SWIG 自动将模拟的“this”指针包装到 C 结构体?

    我已经实现了一个简单的 C 类 使用结构中的函数指针来实现成员函数 并将指向该结构的指针作为每个函数的第一个参数传递 类似于中的隐式 this 指针C module mytest typedef struct mytest mytest s
  • 是否可以使用一个域通过 Google App Engine 在 Google Cloud Storage 上提供静态文件?

    首先 建立一个网站www example com与谷歌应用程序引擎https cloud google com products 二 上传静态图片example jpg到谷歌云存储https cloud google com product
  • 使用 JSTL 和 EL 设置日期格式并显示它

    如何格式化和显示DateJSP 中的对象 最好使用 JSTL 和 EL 但欢迎使用其他解决方案 我无法更改 bean 对象 我有以下课程 import java util Date public class Person private D
  • 今天、本周、本月流行 - 设计模式

    我有一个系统 显示按三个字段之一排序的条目 即最流行的 今天 本周 和 本月 每次查看条目时 分数都会增加 1 从而改变顺序 因此 如果条目 1 是新条目并且今天被浏览了 10 次 那么它的分数将为 Today 10 Week 10 Mon
  • 使用委托会产生垃圾吗

    我正在使用 XNA 为 xbox360 开发一款游戏 与 PC 上的垃圾收集器相比 Xbox 上的垃圾收集器的性能相当糟糕 因此将垃圾生成量降至最低对于顺利运行游戏至关重要 我记得曾经读过 调用委托会产生垃圾 但现在我找不到任何对委托创建垃
  • 如何刷新访问令牌

    我有一个 Asp net2 0核心 Web 应用程序连接到 Identity server 4 应用程序进行身份验证 还有一个涉及到的API API 使用访问令牌作为承载令牌 我的创业 services AddAuthentication
  • jquery live 的替代方案可以工作

    我有这个简单的代码 http jsfiddle net borth BmEZv 如果您单击该链接一次 它就可以正常工作 如果你点击第二次 它就不起作用了 由于 html 是在 DOM 加载后才加载到 html 中的 所以我尝试过 on bi
  • Bootstrap 下拉子菜单丢失

    Bootstrap 3 仍处于 RC 阶段 但我只是在尝试实现它 我不知道如何放置子菜单类 即使 css 中没有类 甚至新文档也没有提及任何内容 它在 2 x 中存在 类名称为下拉子菜单 Bootstrap 5 2023 年更新 添加一些
  • 如何使用 Gradle 和 Spring Boot 捕获构建信息

    我正在尝试访问构建信息值 例如version在我的 Java 主应用程序中使用 Spring Boot 和 Gradle 我找不到任何有关如何配置的文档 示例 build gradle application yml 如果需要的话 Java
  • 阿拉伯字符编码问题:UTF-8 与 Windows-1256

    快速背景 我继承了一个包含英语和阿拉伯语文本组合的大型 sql 转储文件 并且 我认为 它最初是使用 latin1 导出的 在导入文件之前 我将所有出现的 latin1 更改为 utf8 阿拉伯语文本在 phpmyadmin 中没有正确显示
  • 将所有使用的Python模块收集到一个文件夹中?

    我认为以前没有人问过这个问题 我有一个包含许多不同 py 文件的文件夹 我制作的脚本只使用了一些 但有些调用了其他脚本 我不知道所有正在使用的脚本 是否有一种程序可以获取使该脚本运行到一个文件夹中所需的一切 Cheers Use the m
  • Character.getNumericValue() 问题

    我可能遗漏了一些东西 但是为什么这两个数值等于 1 System out println Character getNumericValue Character MAX VALUE System out println Character
  • 如何从时间戳列表中获取开始和结束范围?

    我有一个像这样的时间戳字符串 2016 01 14T22 43 55Z 2016 01 15T00 04 50Z 2016 01 15T00 44 59 08 30 2016 01 15T01 25 35 05 00 2016 01 15T
  • 表单未使用 JS 提交

    我有世界上最简单的 JavaScript 函数 fnSubmit window print document formname submit 这是由以下人员调用的