Показать сообщение отдельно
  #7 (permalink)  
Старый 25.02.2014, 14:12
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ну, чета я фигню написал.
Ок, мой вариант, во много схожий с уже предложенным. Просто чуть более структурированный:

<!DOCTYPE HTML>
<form action="">
	<input name="form.pj" value="1235">
	<input name="form.cr" value="123">
	<input name="form.app.id" value="1234">
	<input name="form.app.fm.id" value="12356">
	<script>
		var formElement = document.querySelector('form');
		var formData = toTree(serializeForm(formElement)).form;
		alert(JSON.stringify(formData));

		function serializeForm(form) {
			return Array.apply(null, form).reduce(function(fields, field) {
				fields[field.name] = field.value;
				return fields;
			}, {});
		}

		function toTree(object) {
			var root = {};
			for (var key in object) {
				var subtree = root;
				var path = key.split('.');
				for (var i = 0; i < path.length - 1; i++) {
					subtree = subtree[path[i]] || (subtree[path[i]] = {});
				}
				subtree[path[i]] = object[key];
			}
			return root;
		}
	</script>
</form>


Не работает в IE8! Хотя исправить очень просто.
__________________
В личку только с интересными предложениями
Ответить с цитированием