HTMLeando: para desarrolladores Web

Pregunta


¿Cómo obtener los valores de un formulario con Javascript? 

Responder esta pregunta por dudin el 2008-11-25
Quiero obtener los valores de un formulario html mediante Javascript y formatearlos de la siguiente manera "campo1=valor1& campo2=valor2& campo3=valor3".

Respuestas

Thumb_up
Thumb_down

0%
0%
function form_params( id )
{
    var params = new Array()
    form = document.getElementById(id);
    var length = form.elements.length
    for( var i = 0; i < length; i++ )
    {
        element = form.elements[i]
 
        if(element.tagName.toLowerCase() == 'textarea' )
        {
                params[element.name] = element.value
        }
        else if( element.tagName.toLowerCase() == 'input' )
        {
                if( element.type == 'text' || element.type == 'hidden' || element.type == 'password')
                {
                        params[element.name] = element.value
                }
                else if( element.type == 'radio' && element.checked )
                {
                        if( !element.value )
                                params[element.name] = "on"
                        else
                                params[element.name] = element.value
 
                }
                else if( element.type == 'checkbox' && element.checked )
                {
                        if( !element.value )
                                params[element.name] = "on"
                        else
                                params[element.name] = element.value
                }
        }
    }
    return params;
}
 

form_params devuelve un arreglo con todos los elementos del formulario de la forma llave->valor a partir del id del elemento formulario. Ya disponibles todos los valores y llaves sólo le faltaría convertirlos a la cadena.
por Anónimo el 2008-11-25

Thumb_up
Thumb_down

0%
0%
Si estás usando la librería Javascript Prototype, la misma dispone del método serialize() que hace esta operación de forma mágica:
$('mi-formulario').serialize()
Referencia:http://www.prototypejs.org/api/form/serialize
por Anónimo el 2008-11-26

Thumb_up
Thumb_down

0%
0%
Otra forma de hacerlo si no usas una librería sería:
function serialize(form) {
  if (!form || !form.elements) return;
 
  var serial = [], i, j, first;
  var add = function (name, value) {
    serial.push(encodeURIComponent(name) + '=' + encodeURIComponent(value));
  }
 
  var elems = form.elements;
  for (i = 0; i < elems.length; i += 1, first = false) {
    if (elems[i].name.length > 0) { /* no incluye los elementos sin nombre */
      switch (elems[i].type) {
        case 'select-one': first = true;
        case 'select-multiple':
          for (j = 0; j < elems[i].options.length; j += 1)
            if (elems[i].options[j].selected) {
              add(elems[i].name, elems[i].options[j].value);
              if (first) break; /* detiene la búsqueda para  select-one */
            }
          break;
        case 'checkbox':
        case 'radio': if (!elems[i].checked) break; /* sino continúa */
        default: add(elems[i].name, elems[i].value); break;
      }
    }
  }
 
  return serial.join('&');
}
 
por Anónimo el 2008-11-26

Anónimo:   Entrar


Consejo: Sé tan específico y descriptivo como puedas. Comparte tu experiencia personal o tus conocimientos.
Puedes investigar para completar tu respuesta.

Puedes poner directamente trozos de código usando las etiquetas [code=php] y [/code] o incrustar desde Snipplr.com [snippet=id_snippet]

Compartir: WebeameMeneame Delicious Digg

Preguntas relacionadas