繁体   English   中英

如何使用MooTools将表单数据转换为对象

[英]How to convert form data to object using MooTools

我想将整个数据形式转换为javascript对象。

<form id='myform'>
   <input type='text' name='field1' value='foo'>
   <input type='text' name='field2' value='bar'>
</form>

会转换为javascript对象...

{
   field1: 'foo',
   field2: 'bar'
}

在MooTools中,您可以轻松地将所有表单值转换为Object:

var formObjects=$('myform').toQueryString().parseQueryString();

转换为JSON:

var formJson=JSON.encode(formObjects);

只需编写自己的方法,基于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结果。

我其实喜欢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());

http://code.google.com/p/form2js/

检查一下,确切地说你需要什么,但框架无关

MooTools没有表格序列化工具; 我知道,这很糟糕。

但是,我已经成功使用了这个独立的实现: form2obj

一种方法。 - 将其转换为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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM