25

我有一个包含很多表单的页面,用户将在该页面上选择一些东西。当用户这样做时,我需要将该元素放在其他地方,就像购物车一样。但我似乎无法得到比页面上的第一个表单更多的东西来实际按预期工作。我尝试了多种方法:

  1. 为所有表单提供相同的 ID,这只会导致第一个表单按照我的意愿行事,并为我提供该表单的数据。
  2. 再次给他们所有相同的 ID,这次将唯一标识符附加到 ID,但是当然,我的 jQuery$('#something')没有捕获它,因为它不匹配。

所以我在想我会怎么做。我只需要从页面上提交的表单中接收数据。如前所述,我可以给它们都加上某种前缀,就像现在一样,但是我不知道如何匹配它。

帮助将不胜感激!

根据要求的一些代码(当然,只是一个例子来说明我的意思):

的HTML:

<form id="something-0"><input type="hidden" value="0"><input type="submit"></form>
<form id="something-1"><input type="hidden" value="1"><input type="submit"></form>

jQuery:

$("#something-%").submit(function(e) {
e.preventDefault();
$("#some-span").html(data);
});

我希望#something-% 接受“-”之后的任何内容,希望您能理解。

4

3 回答 3

36

作为一般答案,要对一组元素进行分类,请使用class属性,为每个元素赋予相同的类名。然后,您可以按该类选择元素。一个元素可以有多个类。

$(".something");

如果必须使用 id,可以使用属性选择器:

$("[id^='something']");  // all elements with an id beginning with 'something'
$("[id$='something']");  // all elements with an id ending with 'something'

对于这个特定的问题,由于您想对页面中的任何表单进行操作,最简单的选择是使用元素名称选择器:

$("form");

this无论选择器如何,您都可以通过在处理程序中引用来识别提交的表单submit()

$("form").submit(function (e) {
    e.preventDefault();
    var formId = this.id;  // "this" is a reference to the submitted form
});
于 2013-02-19T23:35:30.523 回答
10

您可以使用选择器“表单”来捕获所有表单,例如

$("form").submit(function() {
  var theForm = $(this);
  var formID = theForm.attr("id");
  // do something
});
于 2013-02-19T23:23:15.190 回答
-1

像这样的东西...

   $('#myForm').submit(function (e) {
     e.preventDefault;
     if (e.result == true) {
       alert("This form was submitted!")
     }
   });
于 2019-06-25T15:16:51.167 回答