formulario de envío de jquery con casilla de verificación

Así que quiero enviar solo cuando una casilla de verificación está marcada (quiero hacer algo más cuando una casilla de verificación no está marcada). He intentado que esta casilla de verificación funcione, pero no ha sido en vano. Esto es lo que tengo:

$('#checkbox').click(function() { 
    if ($(this).attr('checked')) {
        $("#form").submit(function () {
            var newvals = $("#form").serialize();   // serialize data

            $.post('save.php', newvals, function(data) { 
                $("#content").html(data);
            }); // posting data and dumping response onto page      

            return false;
        }); 

    } else {

        alert(2); // placeholder for what i want to do otherwise
    }

});

Miré a mi alrededor y estaba hurgando con .trigger y .live, pero tengo problemas incluso pensando en cómo funcionaría la lógica con esas funciones. No me opongo a usarlos siempre que pueda distinguir entre una casilla 'marcada' y una casilla 'no marcada'.

¿Alguna idea?

preguntado el 27 de agosto de 11 a las 23:08

Tu código me parece correcto. ¿Puede dar detalles de lo que no está funcionando o lo que quiere lograr? -

sí. básicamente, en un cheque: tome entradas de usuario, borre campos y publique datos. al desmarcar: vuelva a llenar los campos con datos publicados para mostrar lo que ingresó el usuario. el primer paso para hacer todo esto fue averiguar cómo publicar datos. Sé que la lógica está funcionando, pero por alguna razón no puedo encontrar mi matriz publicada. -

2 Respuestas

En tu código estás adjuntando el formulario submit controlador de eventos cada vez que marque la casilla de verificación. No va a desencadenar el evento de envío y hará lo que esperas.

Debe adjuntar el controlador de eventos de envío fuera del controlador de eventos de clic de la casilla de verificación y activar el evento de envío del formulario cuando la casilla de verificación está marcada. Prueba esto

$function(){

    $("#form").submit(function () {

      var newvals = $("#form").serialize(); // serialize data
      $.post('save.php',newvals,function(data) { 
        $("#content").html(data);
      });   // posting data and dumping response onto page      

      return false;
    });   

   $('#checkbox').click(function() { 
    if(this.checked) {//Just this.checked will say whether its checked or not
        //Now trigger the form submit event
        $("#form").trigger('submit');
    } 
    else{
       alert(2); // placeholder for what i want to do otherwise

       //I think you want to erase the textboxes. 
       //You can find all the input elements and set there value to empty
       $("#form input").val('');
    }
   });

});

Respondido 28 ago 11, 05:08

yo esto funcionó! hola !! He estado girando mis ruedas todo el día. ¡Gracias! - yoshi

Dé la vuelta a la lógica: adjunte un controlador al envío del formulario y, allí, verifique si su entrada está marcada. Podría hacer algo como esto:

$(function(){
    $('form').submit(function(e){
        e.preventDefault();

        if ($('#checkbox').is(':checked')) {
            alert('submit');
        } else {
            alert('do not submit');
        }

    });
});

Respondido 28 ago 11, 03:08

(por supuesto, deberá cambiar los selectores de CSS para que coincidan con su marcado, pero con suerte esto muestra la lógica que necesita). - Philip Schweiger

tal vez necesito compartir más información: al marcar: quiero enviar y borrar los cuadros de texto del remitente al desmarcar: quiero mostrarle al usuario lo que ingresan en los cuadros de texto - yoshi

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