it-swarm.com.de

senden eines Formulars, wenn ein Kontrollkästchen aktiviert ist

gibt es eine Möglichkeit, ein Formular zu senden, wenn ein Kontrollkästchen aktiviert ist?

<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';
    }
?>

Das ist, was ich momentan habe, aber ich möchte das Formular ohne eine Senden-Schaltfläche senden, wenn der Benutzer ein Kontrollkästchen aktiviert oder deaktiviert. Irgendeine Hilfe?

24
user1394849

In einfachem JavaScript einfach ausgedrückt

onChange="this.form.submit()"

in das Formular/Eingabe-Tag.

51
Sliq

Ja das ist möglich.

<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>

Durch Hinzufügen von onchange="document.getElementById('formName').submit()" zu jedem Kontrollkästchen werden Sie jedes Mal übergeben, wenn ein Kontrollkästchen geändert wird.

Wenn Sie mit jQuery zufrieden sind, ist es noch einfacher (und unauffällig):

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

Bei einer beliebigen Anzahl von Kontrollkästchen in Ihrem Formular wird das Formular gesendet, wenn das Ereignis "Ändern" eintritt. Dies funktioniert sogar, wenn Sie dank der .on()-Methode dynamisch mehr Ankreuzfelder erstellen.

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

Obwohl es wahrscheinlich besser wäre, Klassen zu jedem der Kontrollkästchen hinzuzufügen und zu tun

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

so können Sie auswählen, welche Kontrollkästchen das Formular absenden, anstatt dass alle es tun.

3
Gorving

Ich habe ungefähr vier Stunden damit rumgespielt und beschlossen, dies mit Ihnen zu teilen.

Sie können ein Formular übermitteln, indem Sie auf ein Kontrollkästchen klicken. Das Seltsame ist jedoch, dass Sie beim Überprüfen der Übermittlung in PHP erwarten, dass das Formular festgelegt wird, wenn Sie das Kontrollkästchen aktivieren oder deaktivieren. Aber das ist nicht wahr . Das Formular wird nur festgelegt, wenn Sie das Kontrollkästchen tatsächlich aktivieren . Wenn Sie es deaktivieren, wird es nicht festgelegt. Das Wort, das am Ende eines Ankreuzfeld-Eingabetyps angekreuzt ist, bewirkt, dass das Ankreuzfeld angekreuzt angezeigt wird. Wenn Ihr Feld also angekreuzt ist, muss es das im folgenden Beispiel widerspiegeln. Wenn das Kontrollkästchen deaktiviert ist, aktualisiert PHP den Feldstatus, wodurch Word das Verschwinden überprüft.

Ihr HTML sollte so aussehen:

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

und die 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;
      }
}
2
bramwolf