Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2012, 21:20
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Как получить все данные формы?
Нужно получить информацию всех селектов, инпутов, текстарей и пр. Конечно, это можно сделать перебором. Но, подозреваю, есть какой-нибудь метод или свойство.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2012, 21:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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}
}
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2012, 21:46
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

nasqad, спасибо, в проекте использую его, поэтому воспользуюсь.
devote, что-то много получилось буков. Но всё равно возьму на заметку.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2012, 22:14
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

devote,
А для чего вот это

var plus = '++'.substring(0,1);


Почему не просто, "+" ?
__________________
readOnly
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2012, 22:15
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от FINoM
devote, что-то много получилось буков. Но всё равно возьму на заметку.
Да это я у себя в борохле вытащил, старое какое то кусок кода, давно где то копирнул... мусора то в нем полно, но что делать с этим дальше думаю поймешь
Ответить с цитированием
  #6 (permalink)  
Старый 14.02.2012, 22:16
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от poorking Посмотреть сообщение
devote,
А для чего вот это

var plus = '++'.substring(0,1);


Почему не просто, "+" ?
Понятия не имею, не я писал этот код
Ответить с цитированием
  #7 (permalink)  
Старый 14.02.2012, 22:30
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

function getData(form) {
    return Array.prototype.map.call(form, function (field) {
        return {
            name: field.name,
            value: field.value
        };
    });
}


Как-то так.
Ответить с цитированием
  #8 (permalink)  
Старый 14.02.2012, 22:33
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от DreamTheater
Как-то так.
не особо правильно с учетом того что инпуты с типом radio и одним именем не должны попадать все в массив, а лишь то которое выбрано. Чекбоксы тоже лишь те что чекнуты. Поля с одинаковым именем вообще не должны попасть оба.

Последний раз редактировалось devote, 14.02.2012 в 22:40. Причина: ы
Ответить с цитированием
  #9 (permalink)  
Старый 14.02.2012, 22:35
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Сообщение от devote Посмотреть сообщение
не особо правильно с учетом того что инпуты с типом radio и одним именем не должны попадать все в массив, а лишь то которое выбрано.
Ну это ведь в качестве примера, можно сделать дополнительную обработку для радио.
Ответить с цитированием
  #10 (permalink)  
Старый 14.02.2012, 22:40
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от DreamTheater
Ну это ведь в качестве примера, можно сделать дополнительную обработку для радио.
Ну а кто бы спорил Я подал идею для примера, хоть и не писал ее сам, а дальше FINoM разберется.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список элементов в localStorage? Бобр Общие вопросы Javascript 8 17.09.2013 14:32
вывод jquery cookie как вывести данные из куки klubnichkaaa AJAX и COMET 2 12.08.2011 13:45
как получить данные из reader.xmlData lfs2008 ExtJS 3 02.11.2010 19:12
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32
Возможно ли получить данные из файла на сервере? sdff Общие вопросы Javascript 11 19.07.2008 20:48