Как стать автором
Обновить

Javascript — получение данных из формы в хэш-массив

Время на прочтение1 мин
Количество просмотров1.9K
Простая функция, которая может быть кому-то полезна.

Цель: отправить данные из формы методом 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;
}


Функция просто проходит по всем input, select и textarea в форме, формируя hash-массив. Учитываются имена в виде name[] и multiple для select.
Если что-то упустил, подскажите.
Если уже есть общеупотребимое готовое решение, тоже подскажите.
Теги:
Хабы:
Всего голосов 11: ↑9 и ↓2+7
Комментарии14

Публикации

Истории

Ближайшие события