form
====

### Interfaz del elemento formulario de HTML

Los elementos `FORM` comparten todas las propiedades y métodos de los otros elementos HTML descritos en el capítulo del elemento. También tienen la interfaz especial HTMLFormElement.

Esta interfaz proporciona métodos para crear y modificar los elementos `FORM` usando el DOM. El siguiente ejemplo muestra como crear un nuevo formulario, como modificar sus atributos y enviarlo:
```

// Crea un formulario
var f = document.createElement("form");

// Lo añade en el cuerpo ('body') del documento
document.body.appendChild(f);

// Añade los atributos de acción y método
f.action = "/cgi-bin/some.cgi";
f.method = "POST"

// Llama el método de enviar el formulario
f.submit();
```


Además, el siguiente documento HTML muestra como se puede extraer información de un formulario y cambiar algunos de sus atributos.
```

<title>Ejemplo de formulario</title>
<script type="text/javascript">
  function getFormInfo() {
    var info;

    // Obtiene una referencia utilizando la colección de formularios
    var f = document.forms["formularioA"];
    info = "f.elements: " + f.elements + "\n"
         + "f.length: " + f.length + "\n"
         + "f.name: " + f.elements + "\n"
         + "f.acceptCharset: " + f.acceptCharset + "\n"
         + "f.action: " + f.action + "\n"
         + "f.enctype: " + f.enctype + "\n"
         + "f.encoding: " + f.encoding + "\n"
         + "f.method: " + f.method + "\n"
         + "f.target: " + f.target;
    document.forms["formularioA"].elements['tex'].value = info;
  }

  // Se pasa la referencia al formulario desde el
  // atributo al hacer clic ('onclick') del botón con la ayuda de este.formulario ('this.form')
  function setFormInfo(f) {
    f.method = "GET";
    f.action = "/cgi-bin/evil_executable.cgi";
    f.name   = "totally_new";
  }
</script>

<h1>Ejemplo de formulario</h1>

<form name="formularioA" id="formularioA"
 action="/cgi-bin/test" method="POST">
 <p>Haga clic en "Info" para ver informaciones de este formulario.
    Haga clic en "Set" para cambiar los parámetros y otra vez en "Info" para ver los efectos</p>
 <p>
  <input type="button" value="Info"
   onclick="getFormInfo();">
  <input type="button" value="Set"
   onclick="setFormInfo(this.form);">
  <input type="reset" value="Reset">
  <br>
  <textarea id="tex" style="height:15em; width:20em">
 </p>
</form>
```

### Propiedades

form.elements (todos los elementos del formulario)

`.elements` devuelve una colección de todos los controles que hay en el formulario `FORM`.

form.length

`.length` devuelve la cantidad de controles que hay en el formulario

form.name

`.name` devuelve el nombre del formulario actual en forma de cadena.

form.acceptCharset

`.acceptCharset` devuelve una lista del conjunto de caracteres soportados para el actual elemento `FORM`.

form.action

`.action` obtiene/configura la acción del elemento `FORM`.

form.enctype

`.enctype` gets/sets the content type of the `FORM` element.

form.encoding

`.encoding` gets/sets the content type of the `FORM` element.

form.method

`.method` obtiene/configura el método HTTP utilizado para enviar el formulario.

form.target

`.target` obtiene/configura el objetivo de la acción (i.e., the frame to render its output in).

### Métodos

form.submit

submit() manda el formulario.

form.reset

reset() restaura el formulario, lo devuelve al estado inicial.