2011-02-02 9 views
5

Si tengo un formulario con los 3 campos siguientes:¿Cómo excluir determinados campos de la forma previa presentación del formulario sin desactivar el campo

Nombre Apellido Fecha de Nacimiento

Cuando el usuario rellena los 3 campos y presenta obtendrá la URL

http: //fakeURL.php?firstName=Fred&lastName=Flintstone&DateOfBirth=2/5/1952 

Sin embargo, si el usuario sólo llena en nombre y fecha de nacimiento obtendrá

http: //fakeURL.php?firstName=Fred&lastName=&DateOfBirth=2/5/1952 (where lastName has no value) 

¿Cómo logro

http: //fakeURL.php?firstName=Fred&DateOfBirth=2/5/1952 (where lastName and value are removed from the URL) 

no quiero desactivar el campo de entrada en el uso de onsubmit. ¿Hay alguna forma mejor que desactivar el campo de entrada?

Por favor, ayuda ...

+0

* ¿Por qué * no desea deshabilitar el campo en un controlador "enviar"? – Pointy

+0

¿Por qué es importante que el campo esté vacío? En cualquier caso, ¿ha considerado utilizar POST en lugar de GET para que sus URL sean más limpias y se oculte una mayor parte de su implementación a los visitantes? – Endophage

Respuesta

5

debe:

  1. suprimir o inutilizar el campo del formulario antes de enviarlo
  2. no presenten la forma, en lugar redirigir a una URL que construir a partir de la forma a sí mismo
  3. Hacer una petición AJAX en lugar de salir de la página

Asi De esas opciones, no puede enviar este formulario a través de GET sin que todas las entradas formen parte de la URL. Eso es parte de las especificaciones HTML y HTTP.

-1

Debe utilizar formularios con el GET método solo cuando se supone que la nueva página debe marcarse y pasarse.

Ya que estamos hablando de que teniendo la entrada del usuario (y supongo que también almacenar esa entrada en una base de datos o alguna almacenamiento permanente similar), usted debe utilizar POSTlugar.

+0

Dile eso a WordPress. – XedinUnknown

+0

No tiene nada de malo tomar * la entrada del usuario * y enviarla con un método 'get'. Tener la información guardada en la barra de direcciones beneficia al usuario si también actualizara la página. – rorymorris89

9

Basta con retirar atributo "name" del elemento de entrada -

// exclude the inputId from the form collection 
$("#inputId").removeAttr('name'); 

disfrutar!

+0

Esta es una gran solución simple. ¡Gracias! – luqita

+1

Esto es mucho más simple que la respuesta principal y funciona muy bien para el caso cuando algunos datos de entrada solo existen para ayudar al usuario de alguna manera y no es necesario enviarlos (en cuyo caso simplemente no le damos un 'nombre' en el primer lugar). – Kat

+1

[Demo] (http://jsfiddle.net/jqpw7eef/) (use el panel de red de la consola del desarrollador para examinar la solicitud enviada, que simplemente debería ser '? Sent = foo'). – Kat

Cuestiones relacionadas