我想将整个数据形式转换为javascript对象。
<form id='myform'>
<input type='text' name='field1' value='foo'>
<input type='text' name='field2' value='bar'>
</form>
会转换为javascript对象......
{
field1: 'foo',
field2: 'bar'
}
答案 0 :(得分:29)
在MooTools中,您可以轻松地将所有表单值转换为Object:
var formObjects=$('myform').toQueryString().parseQueryString();
转换为JSON:
var formJson=JSON.encode(formObjects);
答案 1 :(得分:4)
只需编写自己的方法,基于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/ - 生成您要求的exact
结果。
答案 2 :(得分:4)
我实际上喜欢Dimitar Christoff的回答和Trebla的组合:
Element.implement({
toJSON: function(){
var j = {};
Array.each(this.toQueryString().split('&'),function(a){
var kv = a.split('=')
j[kv[0]] = kv[1]||'';
});
return JSON.encode(j);
}
});
console.log($('formular_support').toJSON());
答案 3 :(得分:2)
http://code.google.com/p/form2js/
检查一下,确切地说你需要什么,但框架无关
答案 4 :(得分:0)
MooTools没有附带表单序列化工具;我知道,这很糟糕。
但是,我已经成功使用了这个独立的实现:form2obj。
答案 5 :(得分:0)
一种方法。 - 将其转换为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.
将其转换为哈希。
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.