Javascript — Получение Данных Из Формы В Хеш-Массив

Простая функция, которая может быть кому-то полезна.

Цель: опубликовать данные из формы с помощью метода jQuery.post() без перезагрузки страницы.

Задача: получить данные из формы в виде хеш-массива.

 function getFormHash(formSelector)
 {      
       hash = {};
       inputs = {};
       jQuery(formSelector+' input').

each(function() { name = jQuery(this).

attr('name'); value = jQuery(this).

attr('value'); type = jQuery(this).

attr('type'); if(name.substr(name.length-2, 2)=='[]') { name = name.substr(0, name.length-2) if(typeof(inputs[name])=='undefined') { inputs[name]=0; } else { inputs[name]++; } if(type.toUpperCase() != 'CHECKBOX' || jQuery(this).

attr('checked') == true) { hash[name+'['+inputs[name]+']'] = value; } } else { hash[name] = value; } }); jQuery(formSelector+' select').

each(function() {n name = jQuery(this).

attr('name'); multiple = jQuery(this).

attr('multiple'); if(typeof(name)!=='undefined' ) { i = 0; jQuery(this).

children('option').

each(function() { if(jQuery(this).

attr('selected')) { value = jQuery(this).

attr('value'); if(multiple==true) hash[name+'['+i+']'] = value; else hash[name] = value; i++; } }); } }); jQuery(formSelector+' textarea').

each(function() { name = jQuery(this).

attr('name'); value = jQuery(this).

html(); hash[name] = value; }); return hash; }

Функция просто перебирает все поля ввода, выбора и текстовые области формы, создавая хеш-массив.

Учитываются имена в форме name[] и множественные для select. Если я что-то пропустил, пожалуйста, скажите мне.

Если уже есть распространённое готовое решение, подскажите и мне.

Теги: #JavaScript #jQuery #отправка формы #хеш #хэш #массив #Чулан

Вместе с данным постом часто просматривают: