Простая функция, которая может быть кому-то полезна.
Цель: отправить данные из формы методом jQuery.post() без перезагрузки страницы.
Задача: получить данные из формы в виде хэш-массива.
Функция просто проходит по всем input, select и textarea в форме, формируя hash-массив. Учитываются имена в виде name[] и multiple для select.
Если что-то упустил, подскажите.
Если уже есть общеупотребимое готовое решение, тоже подскажите.
Цель: отправить данные из формы методом 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.
Если что-то упустил, подскажите.
Если уже есть общеупотребимое готовое решение, тоже подскажите.
