¿Cómo agrego campos de formulario ocultos según la casilla de verificación seleccionada con javascript?

Quiero escribir entradas ocultas en el formulario según las casillas de verificación seleccionadas. En mi ejemplo, no obtengo errores, pero aún no pasa los campos ocultos (editado)

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<div id="test"></div>
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="youremail@mail.com">
<input type="hidden" name="currency_code" value="US">
<input type="checkbox" id="chkbox1" name="camp1" value="a">
<input type="checkbox" id="chkbox2" name="camp2" value="b">
<input type="submit" value="PayPal">
</form>
<script type="text/javascript">
var element = document.getElementById('test');
if(element != null && element.checked) {

var newElement = document.createElement('input');
newElement.type = "hidden";
newElement.name = "item_name_1";
newElement.value = "MyItem #1";

document.getElementById('chkbox1').appendChild(newElement);

var newElement2 = document.createElement('input');
newElement2.type = "hidden";
newElement2.name = "amount_1";
newElement2.value = "7.00";

document.getElementById('test').appendChild(newElement2);
}

Teóricamente esto debería funcionar, pero me tiene perplejo. Si alguien puede ofrecer algún consejo, sería muy apreciado.

preguntado el 03 de mayo de 12 a las 22:05

No está completamente relacionado, pero asegúrese de tener algún tipo de validación del lado del servidor en los precios que está insertando:

Esto solo sucede una vez, cada vez que ejecuta el script; si desea agregar/eliminar estos campos a medida que se alternan las casillas de verificación, deberá agregar un controlador para los eventos marcados en cada casilla de verificación. Sin embargo, probablemente sería más fácil tener los campos allí de cualquier manera y decidir qué hacer en función de las selecciones de la casilla de verificación en el backend. -

¿Dónde estás poniendo ese código js? Deberías hacer una función para activarlo en el onclick evento de las casillas de verificación, además, ¿son realmente necesarias esas entradas ocultas? ¿No puede simplemente poner los valores de las entradas ocultas en los valores de las casillas de verificación? -

1 Respuestas

Primero, nunca use document.write mientras que en el contexto de una página web. Esa es una mala práctica. Si desea agregar dinámicamente un elemento con javascript puro, simplemente debe crear un nuevo elemento:

var newElement = document.createElement('input');
newElement.type = "hidden";
newElement.name = "something";
newElement.value = "someValue";

document.getElemenytById('somecontainer').appendChild(newElement);

En segundo lugar, el error significa que el document.getElementById llamar a una de sus declaraciones no encontró el elemento especificado. Necesitas ser nulo comprobando los resultados:

var element = document.getElementById('chkbox1');

if(element != null && element.checked)
   // Do Stuff

Ahora, sin conocer la ubicación de su secuencia de comandos y dónde está este formulario en su página, podría sufrir la ubicación de carga. Si su secuencia de comandos se ejecuta antes de que se cargue el HTML, no encontrará los elementos.

contestado el 03 de mayo de 12 a las 22:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.