Как проверить с помощью jQuery, если какая-либо форма отправлена?
У меня есть страница с большим количеством форм, и пользователь собирается выбрать что-то на этой странице. Когда пользователь делает это, мне нужно разместить этот элемент где-то в другом месте, как и в корзине покупок. Но я не могу получить больше, чем первая форма на странице, чтобы работать по назначению.
Я пробовал несколько вещей:
- Дайте всем формам один и тот же идентификатор, который только заставлял первую форму действовать так, как я хотел, давая мне данные этой формы.
- Дайте им все тот же идентификатор снова, на этот раз добавив уникальный идентификатор к 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-% принимал все, что приходит после "-", надеюсь, вы понимаете.
Ответы
Ответ 1
В качестве общего ответа, чтобы классифицировать группу элементов, используйте атрибут 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
});
Ответ 2
Вы можете поймать все формы, используя форму "селектор", например
$("form").submit(function() {
var theForm = $(this);
var formID = theForm.attr("id");
// do something
});
Ответ 3
Что-то вроде этого...
$('#myForm').submit(function (e) {
e.preventDefault;
if (e.result == true) {
alert("This form was submitted!")
}
});