我不知道如何将匿名函数附加到表单的 onsubmit 事件。我想将匿名 AJAX JS 逻辑绑定到反馈表单。我不想依赖唯一的 ID。
我正在使用
feedbackform.onsubmit = function (e) {
但是,如果我嵌入了几个相同的反馈表单,那将无法正常工作。
一种前进的方式可能是使用onsubmit="return feedback()"
,但是我无法弄清楚如何从反馈功能访问表单的内容。
在您的反馈功能内部更改feedbackform.
为this.
.
在这里发布我们的代码是一个好主意,而不是在其他地方发布,只要发布在这里,它就可能可用也可能不可用。
您依赖的做法是 IE 将 ID 和 NAME 属性值转换为引用相关元素的全局对象的属性。这被广泛认为是“坏事”,但被大多数其他浏览器复制以与 IE 兼容(当时大多数网站几乎都是专门为 IE 编写的,拥有大约 95% 的用户份额)。
然后是开放标准和支持它们的齐心协力。现在没有任何人使用它,尽管它仍然受到支持。
无论如何,全局feedbackForm将引用名为feedbackForm的单个表单,或者如果有多个元素,则引用名为feedbackForm的元素集合,就像你这样做时得到的一样document.getElementsByName('feedbackForm')
。
当然,除非您声明一个名为feedbackForm的函数或全局变量(看看为什么这是一个坏主意?)。
因此,您可以遍历该集合以找到所需的表单,或者按照One of One 的建议,您可以从提交侦听器传递对表单的引用:
<form onsubmit="return feedback(this)" ...>
并在函数中:
function feedback(feedbackForm) {
所以现在局部变量feedbackForm引用了其处理程序调用该函数的表单。
您可以通过以下方式访问内容:
$('feedbackform').submit(function() {
$(this).serialize();
});