Я хотел бы преобразовать всю форму данных к объекту JavaScript.
<form id='myform'>
<input type='text' name='field1' value='foo'>
<input type='text' name='field2' value='bar'>
</form>
преобразовал бы в объект JavaScript...
{
field1: 'foo',
field2: 'bar'
}
Один из способов сделать это. -- Преобразование в JSON объект
var hm = $('myform').toQueryString();
hm = '{"'+hm+'"}';
hm = hm.replace(/&/g, '","');
hm = hm.replace(/=/g, '":"');
var jsn = JSON.decode(hm); // jsn is ur JSON object.
Преобразование в Hash.
Mootools имеет тип объекта под названием Hash. Вы можете преобразовать его в этот же тип, сделав следующее.
Хэш-ссылка: http://mootools.net/docs/core/Native/Hash Она имеет набор и получение методов, и вы можете циклически и делать вещи, проверьте ссылку.
var hm = $('myform').toQueryString();
var ar = hm.split('&');
var finalo = new Hash();
ar.each(function(a, aCounter)
{
var tmp = a.split('=');
finalo.set(tmp[0], tmp[1]);
});
// finalo is your Hash object. Use the get() method to extract values. Check the link given above.
MOOTOOLS не приходит с инструментом сериализации формы; Я знаю, что сосет.
Тем не менее, я успешно использовал эту автономную реализацию: Form2obj .
просто напишите свой собственный метод, основываясь на источнике Element.toQueryString - что-то вроде этого (и я знаю, что название метода - мусор, но это меньшее, что вас беспокоит)
Element.implement({
toJSON: function(){
var json = {};
this.getElements('input, select, textarea', true).each(function(el){
if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
return opt.value;
}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
$splat(value).each(function(val){
if (typeof val != 'undefined') {
json[el.name] = val;
}
});
});
return json;
}
});
console.log($("myform").toJSON());
протестировано и отлично работает с формой примера - http://mootools.net/shell/ZSsVr/ - дает точный
результат, о котором вы просили.