How can I get form data with JavaScript/jQuery?

前端 未结 28 2324
不知归路
不知归路 2020-11-22 12:39

Is there a simple, one-line way to get the data of a form as it would be if it was to be submitted in the classic HTML-only way?

For example:



        
28条回答
  •  感动是毒
    2020-11-22 13:23

    you can use this function for have an object or a JSON from form.

    for use it:

    var object = formService.getObjectFormFields("#idform");

     function  getObjectFormFields(formSelector)
            {
                /// Função que retorna objeto com base nas propriedades name dos elementos do formulário.
                /// Seletor do formulário
    
                var form = $(formSelector);
    
                var result = {};
                var arrayAuxiliar = [];
                form.find(":input:text").each(function (index, element)
                {
                    var name = $(element).attr('name');
    
                    var value = $(element).val();
                    result[name] = value;
                });
    
                form.find(":input[type=hidden]").each(function (index, element)
                {
                    var name = $(element).attr('name');
                    var value = $(element).val();
                    result[name] = value;
                });
    
    
                form.find(":input:checked").each(function (index, element)
                {
                    var name;
                    var value;
                    if ($(this).attr("type") == "radio")
                    {
                        name = $(element).attr('name');
                        value = $(element).val();
                        result[name] = value;
                    }
                    else if ($(this).attr("type") == "checkbox")
                    {
                        name = $(element).attr('name');
                        value = $(element).val();
                        if (result[name])
                        {
                            if (Array.isArray(result[name]))
                            {
                                result[name].push(value);
                            } else
                            {
                                var aux = result[name];
                                result[name] = [];
                                result[name].push(aux);
                                result[name].push(value);
                            }
    
                        } else
                        {
                            result[name] = [];
                            result[name].push(value);
                        }
                    }
    
                });
    
                form.find("select option:selected").each(function (index, element)
                {
                    var name = $(element).parent().attr('name');
                    var value = $(element).val();
                    result[name] = value;
    
                });
    
                arrayAuxiliar = [];
                form.find("checkbox:checked").each(function (index, element)
                {
                    var name = $(element).attr('name');
                    var value = $(element).val();
                    result[name] = arrayAuxiliar.push(value);
                });
    
                form.find("textarea").each(function (index, element)
                {
                    var name = $(element).attr('name');
                    var value = $(element).val();
                    result[name] = value;
                });
    
                return result;
            }

提交回复
热议问题