Как запустить сериализацию на всех формах с помощью jQuery?

0

Я попытался написать функцию, которая происходит во всех формах на странице:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
    $('form').click(function() {
        alert (this.serialize());
        return false;
    });
</script>

но я получаю ошибку

this.serialize не является функцией

Что я делаю не так?

ОБНОВИТЬ

$(this)

Итак, теперь я попробовал:

$('form').click(function() {
    alert ($(this).serialize());
    $("input, select, textarea").attr("disabled", true);
    alert ($(this).serialize());
    return false;
});

Но это отключает все элементы во всех формах на странице.

Как я могу просто отключить тех, кто был нажат кнопку submitbutton?

  • 0
    $(this).find("input, select, textarea").attr(...)
Теги:
forms

3 ответа

1
Лучший ответ

Попробуйте

$(this).serialize();

Вместо

this.serialize();

Чтобы отключить только поля этой формы,

$('form').click(function () {

    // ...

    $(this).find('input, select, textarea').each(function () {
        $(this).prop('disabled', true);
    });

    // ...

});
  • 0
    спасибо, как глупо, наверное, я еще новичок;)
  • 0
    @ rubo77 Нет проблем! Помните, что $() - это функция конструктора jQuery, а this ссылка на элемент вызова DOM. Поэтому всякий раз, когда вам нужна функция jQuery, окружайте this $() .
Показать ещё 2 комментария
0

Я отвечаю на ваш второй вопрос об инвалидах.

Если вы хотите, вы можете сделать что-то вроде:

$('#saveButtonForm3').click(function() {
    alert ($(this).parent().serialize());  // parent() is the form, $(this) is the button
    // this line will disable the fields in the form where the save button is clicked
    $(this).parent().find("input, select, textarea").attr("disabled", true);
    alert ($(this).parent().serialize());
    return false;
});
0

Вам нужно использовать объект jQuery: $(this).serialize()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню