2012-05-15 10 views
20

Czy istnieje sposób przesłania formularza po zaznaczeniu pola wyboru?wysyłanie formularza po zaznaczeniu pola wyboru

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

To, co mam obecnie, ale chciałbym, aby wysłać formularz bez przycisku Prześlij, kiedy użytkownik sprawdza czy unchecks pole wyboru. Jakaś pomoc?

Odpowiedz

40

W zwykłym JavaScript prostu umieścić

onChange="this.form.submit()" 

do tagu forma/wejściowego.

+0

Wow, jako że proste !! –

+0

Jak dodać javascript potwierdzić? –

12

Tak, jest to możliwe.

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

Dodając onchange="document.getElementById('formName').submit()" do każdego wyboru, musisz złożyć w dowolnym momencie pole wyboru jest zmieniany.

Jeśli jesteś OK z jQuery, jest to nawet łatwiejsze (i dyskretne):

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

dla dowolnej liczby pól wyboru w formularzu, gdy „zmiana” zdarzenie, formularz jest składany. To nawet zadziała, jeśli dynamicznie utworzysz więcej pól wyboru dzięki metodzie .on().

+0

Zaimplementowałem ten kod, jednak po zaznaczeniu tego pola wyboru wyniki wyszukiwania nie są wyświetlane. Czy muszę zmienić kod php? – user1394849

+0

Nie ma to nic wspólnego z PHP - sprawdź konsolę JavaScript, aby upewnić się, że nie ma błędów. Czy to działa, jeśli klikniesz Prześlij? –

+0

żadnych błędów, próbowałem obu sugestii, które mi dałeś. – user1394849

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

Choć prawdopodobnie byłoby lepiej, aby dodać klas do każdego z wyboru i zrobić

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

, dzięki czemu można wybrać, które pola wyboru przesłać formularz zamiast wszystkie z nich robi.

0

Zwalczałem to przez około cztery godziny i postanowiłem podzielić się tym z wami.

Możesz przesłać formularz, klikając pole wyboru, ale dziwne jest to, że podczas sprawdzania zgłoszenia w php, możesz oczekiwać, że formularz zostanie ustawiony, gdy zaznaczysz lub odznacz pole wyboru. Ale ta nie jest prawdziwa. Formularz zostanie ustawiony tylko wtedy, gdy faktycznie zaznaczone zostanie pole wyboru, jeśli je usuniesz, nie zostanie ono ustawione. słowo zaznaczone na końcu pola wyboru pole wyboru spowoduje, że pole wyboru będzie wyświetlane jako zaznaczone, więc jeśli pole jest zaznaczone, będzie musiało odzwierciedlać to, jak w poniższym przykładzie. Po odznaczeniu php aktualizuje stan pola, który sprawi, że słowo sprawdzone zniknie.

Ty HTML powinien wyglądać następująco:

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

i 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; 
     } 
} 
Powiązane problemy