Pull to refresh

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

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

Цель: отправить данные из формы методом 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.
Если что-то упустил, подскажите.
Если уже есть общеупотребимое готовое решение, тоже подскажите.
Tags:javascriptjqueryотправка формыhashхэшмассив
Hubs: Lumber room
Total votes 11: ↑9 and ↓2 +7
Views895

Comments 14

Only those users with full accounts are able to leave comments. Log in, please.

Popular right now

Node.js: серверный JavaScript
April 26, 202127,000 ₽Loftschool
Интенсив «Full stack разработчик. JavaScript»
April 26, 2021245,000 ₽Elbrus Coding Bootcamp
Интенсив «Full stack разработчик. JavaScript»
April 26, 2021190,000 ₽Elbrus Coding Bootcamp
Специалист JavaScript
May 24, 202122,690 ₽Специалист.ру