2010-11-08 15 views
6

Necesito enviar solo un valor de campo de entrada a un script cgi a través de un formulario web.¿Cómo puedo excluir que se envíen los valores del botón de opción del formulario HTML?

He agregado un par de controles de formulario adicionales (una casilla de verificación y botones de opción) que manipulan el valor de entrada dependiendo de los estados seleccionados.

Cuando se envía el formulario, también se envían los valores de campo de formulario adicionales, lo que rompe la secuencia de comandos cgi (a la que no tengo acceso). Eliminé el atributo 'nombre' de las casillas de verificación para que no se envíen, pero no puedo hacer esto para los botones de radio, ya que rompe su agrupación.

¿Cómo puedo evitar que se envíen los valores de los botones de opción?

Respuesta

12

Puede agregar un atributo disabled en el controlador submit, esto evitará que se serialicen, ya sea por jQuery o por un envío normal <form>. Por ejemplo:

$("#myForm").submit(function() { 
    $(this).find(":radio, :checkbox").attr("disabled", true); 
}); 

O puede .serialize() sólo los elementos que desee, por ejemplo:

$.post("myPage.cgi", $("#myForm input[type=text]").serialize()); 
+0

Eso hizo el trabajo. Gracias. – pelms

+0

Para jQuery 1.6+, debería ser '.prop ('disabled', true)'. –

0

También es posible tener dos formas diferentes: uno que tiene elementos de forma visible y uno que tiene un oculto input que representa el resultado final que se presentará. Puede adjuntar controladores onchange a sus elementos de formulario visibles para que invoquen JavaScript para actualizar el campo invisible, o puede ejecutar una función como parte del controlador onsubmit para establecer el valor invisible directamente antes de enviarlo.

Aquí hay una jsFiddle demostrando el segundo enfoque (el manejador onsubmit): http://jsfiddle.net/gtU4J/

Cuestiones relacionadas