How to convert form data to object using MooTools

后端 未结 6 1826
借酒劲吻你
借酒劲吻你 2020-12-17 17:22

I would like to convert an entire form of data to a javascript object.

相关标签:
6条回答
  • 2020-12-17 17:40

    In MooTools you can do easy trick how to convert all forms values into the Object:

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

    Convert to JSON:

    var formJson=JSON.encode(formObjects);
    
    0 讨论(0)
  • 2020-12-17 17:42

    MooTools doesn't come with a form serialization tool; i know, that sucks.

    However, I've successfully used this stand-alone implementation: form2obj.

    0 讨论(0)
  • 2020-12-17 17:44

    One way of doing it. -- Converting it to JSON object

    var hm = $('myform').toQueryString();
        hm = '{"'+hm+'"}'; 
        hm = hm.replace(/&/g, '","');
        hm = hm.replace(/=/g, '":"');
        var jsn = JSON.decode(hm); // jsn is ur JSON object.
    




    Convert it to Hash.

    Mootools has an object type called Hash. You can convert to that as well by doing the following.

    Hash link : http://mootools.net/docs/core/Native/Hash It has set and get methods and you can loop and do stuff, check the link.

    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.
    
    0 讨论(0)
  • 2020-12-17 17:49

    just write your own method, basing it upon the source of the Element.toQueryString - something like this (and i know the method name is rubbish but thats the least of your worries)

    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());
    

    tested and working fine with the example form - http://mootools.net/shell/ZSsVr/ - produces the exact result you have asked for.

    0 讨论(0)
  • http://code.google.com/p/form2js/

    check this out, exactly what you're need, but framework independent

    0 讨论(0)
  • 2020-12-17 18:03

    I actually like a combination of Dimitar Christoff answer and 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());
    
    0 讨论(0)
提交回复
热议问题