2012-05-15 15 views
20

¿hay forma de enviar un formulario cuando se marca una casilla de verificación?enviando un formulario cuando se marca una casilla de verificación

<form id="formName" action="<?php echo $_SERVER['PHP_SELF'];?>" method="get"> 
    <input type ="checkbox" name="cBox[]" value = "3">3</input> 
    <input type ="checkbox" name="cBox[]" value = "4">4</input> 
    <input type ="checkbox" name="cBox[]" value = "5">5</input> 
    <input type="submit" name="submit" value="Search" /> 
</form> 

<?php 
    if(isset($_GET['submit'])){ 
     include 'displayResults.php'; 
    } 
?> 

Eso es lo que tengo actualmente, pero me gustaría enviar el formulario sin un botón de enviar, cuando los controles de usuario o desactiva una casilla de verificación. ¿Alguna ayuda?

Respuesta

40

En la llanura JavaScript simplemente poner

onChange="this.form.submit()" 

en la etiqueta de forma/de entrada.

+0

Wow, Como así de simple !! –

+0

¿Cómo agregar javascript para eso? –

12

Sí, esto es posible.

<form id="formName" action="<?php echo $_SERVER['PHP_SELF'];?>" method="get"> 
    <input type ="checkbox" name="cBox[]" value = "3" onchange="document.getElementById('formName').submit()">3</input> 
    <input type ="checkbox" name="cBox[]" value = "4" onchange="document.getElementById('formName').submit()">4</input> 
    <input type ="checkbox" name="cBox[]" value = "5" onchange="document.getElementById('formName').submit()">5</input> 
    <input type="submit" name="submit" value="Search" /> 
</form> 

Mediante la adición de onchange="document.getElementById('formName').submit()" a cada casilla, podrás enviar cualquier vez que se cambia una casilla de verificación.

Si estás bien con jQuery, es aún más fácil (y discreto):

$(document).ready(function(){ 
    $("#formname").on("change", "input:checkbox", function(){ 
     $("#formname").submit(); 
    }); 
}); 

Para cualquier número de casillas de verificación en su forma, cuando el evento "cambio" ocurre, se envía el formulario. Esto incluso funcionará si dinámicamente crea más casillas de verificación gracias al método .on().

+0

Implementé este código; sin embargo, cuando marque la casilla, no se mostrarán los resultados de búsqueda. ¿Debo modificar el código php? – user1394849

+0

No tiene nada que ver con PHP: verifique su consola JavaScript para asegurarse de que no haya errores. ¿Funciona si haces clic en enviar? –

+0

sin errores, he intentado las dos sugerencias que me ha proporcionado. – user1394849

3
$(document).ready(
    function() 
    { 
     $("input:checkbox").change(
      function() 
      { 
       if($(this).is(":checked")) 
       { 
        $("#formName").submit(); 
       } 
      } 
     ) 
    } 
); 

Aunque probablemente sería mejor añadir clases para cada una de las casillas de verificación y hacer

$(".checkbox_class").change(); 

para que pueda elegir qué casillas de verificación enviar el formulario en lugar de todos ellos hacerlo.

0

He estado jugando con esto durante aproximadamente cuatro horas y he decidido compartir esto contigo.

Puede enviar un formulario haciendo clic en una casilla de verificación, pero lo extraño es que al verificar el envío en php, esperaría que se configurara el formulario cuando seleccione o desmarque la casilla de verificación. Pero este no es verdadero. El formulario solo se establece cuando en realidad marca la casilla de verificación; si la desmarcas, no se establecerá. la palabra marcada al final de un tipo de entrada de casilla de verificación hará que la casilla de verificación se muestre marcada, por lo que si su campo está marcado, tendrá que reflejarlo como en el ejemplo siguiente. Cuando se desactiva, el php actualiza el estado del campo, lo que hará que la palabra marcada desaparezca.

Usted HTML debería tener este aspecto:

<form method='post' action='#'> 
<input type='checkbox' name='checkbox' onChange='submit();' 
<?php if($page->checkbox_state == 1) { echo 'checked' }; ?>> 
</form> 

y el php:

if(isset($_POST['checkbox'])) { 
    // the checkbox has just been checked 
    // save the new state of the checkbox somewhere 
    $page->checkbox_state == 1; 
} else { 
    // the checkbox has just been unchecked 
    // if you have another form ont the page which uses than you should 
     make sure that is not the one thats causing the page to handle in input 
     otherwise the submission of the other form will uncheck your checkbox 
    // so this this line is optional: 
     if(!isset($_POST['submit'])) { 
      $page->checkbox_state == 0; 
     } 
} 
Cuestiones relacionadas