Сериализация формы в object jQuery

17 Июня 2014 1304 , ,

Как известно в jQuery можно провести сериализацию формы с помощью метода .serialize() и получить на выходе строку в виде:

«input_name=input_value&input_name2=input_value2»

Также в jQuery мы можем воспользоваться методом serealizeArray и получить на выходе массив с парами name=value. Стоит отметить, что для корректной сериализации формы должен быть указан атрибут name иначе ничего не будет работать. Что делать, если мы хотим получить на выходе сразу объект ? Напишем простую функцию плагин для расширения возможностей jquery serealizeToObject()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ = jQuery; //для наглядности
//Добавляем метод в jquery serializeToObject
$.fn.serializeToObject = function()
{
var object = {}; //создаем объект
var a = this.serializeArray(); //сериализируем в массив
$.each(a, function() { //проходимся по массиву и добавляем параметр name как имя свойства объекта и value как его значение
if (object[this.name] !== undefined) { //не забываем проверить данные
if (!object[this.name].push) {
object[this.name] = [object[this.name]];
}
object[this.name].push(this.value || '');
} else {
object[this.name] = this.value || '';
}
});
return object;
};

Использовать далее очень просто.

1
$('#form').serializeToObject();

На этом все, спасибо.

Подписывайтесь на обновления

Читайте RSS ленту

Комментарии

Добавить комментарий