Как получить все данные формы?
Нужно получить информацию всех селектов, инпутов, текстарей и пр. Конечно, это можно сделать перебором. Но, подозреваю, есть какой-нибудь метод или свойство.
|
function getFormData( form ) {
var str = '';
var gE = 'getElementsByTagName';
var inputs = [
(form[gE] ? form[gE]('input') : form.all ? form.all.tags('input') : []),
(form[gE] ? form[gE]('select') : form.all ? form.all.tags('select') : []),
(form[gE] ? form[gE]('textarea') : form.all ? form.all.tags('textarea') : [])
];
var Globals = new Array();
var fields = new Array();
for (var i = 0; i < inputs.length; i++)
{
for (j = 0; j < inputs[i].length; j++)
{
if (inputs[i][j])
{
var plus = '++'.substring(0,1);
if(escape(inputs[i][j].getAttribute('name')).replace(plus, '%2B') !== 'null')
{
fields[inputs[i][j].getAttribute('name')] = inputs[i][j];
str += escape(inputs[i][j].getAttribute('name')).replace(plus, '%2B');
str += '=' + escape(inputs[i][j].value).replace(plus, '%2B') + '&';
var names = inputs[i][j].getAttribute('name').split('[');
if ( names.length ) {
var temp = Globals;
for(k = 0; k < names.length; k++){
if (k > 0){
var name = names[k].substring(0, names[k].length - 1);
} else {
var name = names[k];
}
if (!temp[name])
{
if (k < (names.length - 1))
{
temp[name] = new Array();
} else {
temp[name] = ((inputs[i][j].value) ? inputs[i][j].value : "");
}
}
temp = temp[name];
}
}
}
}
}
}
return {"action": form.action, "request": str, "data": Globals, "fields": fields}
}
|
nasqad, спасибо, в проекте использую его, поэтому воспользуюсь.
devote, что-то много получилось буков. Но всё равно возьму на заметку. |
devote,
А для чего вот это var plus = '++'.substring(0,1); Почему не просто, "+" ? |
Цитата:
|
Цитата:
|
function getData(form) {
return Array.prototype.map.call(form, function (field) {
return {
name: field.name,
value: field.value
};
});
}
Как-то так. |
Цитата:
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 11:01. |