У меня есть веб-страница с 3 формами. Не вложены, только одна за другой (они почти идентичны, только одна скрытая переменная отличается). Пользователь заполняет только одну форму, и я хотел бы проверить / etc все формы с помощью только одного JS-скрипта.
Итак, как же, когда пользователь нажимает кнопку отправки формы №1, сделать так, чтобы мой js-скрипт работал только с полями в form1? Я так понимаю, это как-то связано с $ (this) .parents, но я не уверен, что с этим делать.
Мой сценарий проверки (который я использовал в другом месте, только с одной формой) выглядит примерно так:
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var nameVal = $("#name").val();
if(nameVal == '') {
$("#name").after('Please enter your name.');
hasError = true;
}
if(hasError == false) {blah blah do all the processing stuff}
Так что мне нужно заменить такие вещи, как $ ("# name"). Val () на $ (this) .parents ('form'). Name.val ()? Или есть лучший способ сделать это?
Спасибо!
var form = $(this).form
как в обычном Javascript:function onClick(button) { var form = button.form; }
???Я нашел этот ответ, когда искал, как найти форму элемента ввода. Я хотел добавить примечание, потому что теперь есть способ лучше, чем использовать:
Я не уверен, когда он был добавлен в jQuery, но метод closest () делает именно то, что нужно, более чисто, чем использование parent (). С ближайшим кодом можно изменить на этот:
Он проходит вверх и находит первый элемент, который соответствует тому, что вы ищете, и останавливается на нем, поэтому нет необходимости указывать: first.
источник
Чтобы получить форму, в которой находится отправка, почему бы просто не
Самый простой и быстрый путь к результату.
источник
Я использовал следующий метод, и он отлично сработал для меня
$('#mybutton').closest("form")
сделал трюк для меня.источник
Эйлин: Нет, это не так
var nameVal = form.inputname.val();
. Должно быть либо ...в jQuery:
Или в JavaScript:
Или комбинация:
С помощью jQuery вы даже можете перебрать все входные данные в форме:
источник