【发布时间】:2014-09-13 03:29:11
【问题描述】:
好的,所以我有以下 Javascript:
//Form handling
var form = $('#form-ajax');
var formMessages = $('#form-messages');
$(form).submit(function(event) {
// Stop the browser from submitting the form.
event.preventDefault();
// Serialize the form data.
var formData = $(form).serialize();
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData
}).done(function(response) {
//Do something
}).fail(function(data) {
//Do something
});
});
这实际上覆盖了默认的表单提交并使用 Ajax 来处理事情。
要使用它,我只需要将form-ajax id 添加到表单中,并添加一个id 为form-messages 的空div;并且来自表单的任何响应都将显示在此 div 中,而无需重新加载页面。
我的问题是我想对多个表单使用相同的 Javascript 调用,但我不知道怎么做。
我认为将 form-ajax 更改为一个类就可以了。所以
var form = $('.form-ajax');
而不是:
var form = $('#form-ajax');
但这并没有帮助。在这两种情况下,如果多个表单与 this 一起使用:
<div id="form-messages"></div>
<form class="form-ajax" method="post" action="dosomething.php">
</form>
<form class="form-ajax" method="post" action="dosomethingelse.php">
</form>
提交任一表单都会触发第二个表单的发布。我假设由于它们在 DOM 中加载的顺序。
任何想法如何解决这个问题,以便我可以重用这个处理程序/事件。
【问题讨论】:
-
在事件处理程序中使用
this而不是form。了解有关 jQuery 事件处理基础知识的更多信息:learn.jquery.com/events/event-basics
标签: javascript jquery html ajax forms