Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Несколько форм с одним классом + submit (https://javascript.ru/forum/misc/28587-neskolko-form-s-odnim-klassom-submit.html)

klev2004 25.05.2012 16:05

Несколько форм с одним классом + submit
 
Проблема следующая:
на странице формируются N-форм одинаковых внешне, но с разным содержимым. С помощью js сохранение информации из формы происходит сразу же при изменении какого-либо поля формы.
К примеру, элемент с классом list по событию change (это select) инициирует отправку данных (submit) из формы с классом form.

$('.list').change(function() { 
    $('.form').submit();
    return false;
});


Работает все хорошо, но, по понятным причинам, отправляется информация сразу из всех форм с этим классом, а должно отправляться только из той, в которой были произведены изменения.

Подскажите, пожалуйста, красивое решение проблемы.

Skipp 25.05.2012 16:28

Ну так правильно иначе и быть не должно.
$('.list').change(function() { 
    $(this).parents('form').submit();
    return false;
});

Только вот непонятно, зачем тут submit, обычно такие вещи кладут на плечи ajaxу.

klev2004 25.05.2012 17:27

Skipp, не помогло. Будем подключать аякс.

Deff 25.05.2012 18:17

klev2004,
Вы бы выложили пару форм , либо лучше ссылку на страницу

klev2004 07.07.2012 17:01

Подскажите как правильно получить value-значение selected варианта в выпадающем списке формы, в которой произошло событие submit. Приемлемы любые варианты обращения к объектам: по ID, по классу, по имени.

Перепробовал кучу разных вариантов и jQuery и чистый javascript. Все не выходит.

Как-то так пробую:
$(this).parent().children('#sel').selectedIndex; // вместо индекса  undefined


здесь, как я понимаю:
this - кнопка сабмит, на которую нажали;
parent() - форма, к которой относится кнопка сабмит;
children(#sel) - выпадающий список, у которого необходимо получить (в данном случае индекс выбранного элемента);
selectedIndex - непосредственно метод получения индекса выбранного пункта в списке.

Deff 07.07.2012 18:21

var value=$(this).parents("form:first").find('#sel').val();

klev2004 09.07.2012 14:49

Deff, спасибо.
Помогла непосредственная передача элемента во входном параметре функции:
<form>
<input id="button" class="button" type="button" value="Button" onclick="func(this); return;">
<select id="sel" name="sel">
<option ...>
</select>
</form>

function func(elem)
{
var value=$(elem).parents("form:first").find('#sel').val();
}

Deff 09.07.2012 14:59

Цитата:

Сообщение от klev2004
Deff, спасибо.
Помогла непосредственная передача элемента во входном параметре функции:

Цитата:

Сообщение от Deff
Вы бы выложили пару форм

:) Что помогло бы помочь существенно быстрее (Это про совет на будущее

klev2004 09.07.2012 15:41

Deff, я это понимаю. Именно в этом случае практически все генерируется php-кодом. Все вариации в статичных html-страничках не учесть, поэтому выкладывать было затруднительно.
Спасибо за помощь!

Вопрос по теме:

Как у кнопки в данном случае изменить value?
$(elem).parents("form:first").find('#button').value = 'Some text';

и
$(elem).parents("form:first").find('#button').val() = 'Some text';

не работают.

UPD:
Вопрос снят. Правильно делать так:
$(elem).parents("form:first").find('#button').val('Some text');


Часовой пояс GMT +3, время: 17:22.