Подтвердить что ты не робот

Отправка формы, когда установлен флажок

Есть ли способ отправить форму, когда установлен флажок?

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

Это то, что у меня есть в настоящее время, но я хотел бы отправить форму без кнопки отправки, когда пользователь проверяет или отменяет флажок. Любая помощь?

4b9b3361

Ответ 1

В простом JavaScript просто поставьте

onChange="this.form.submit()"

в тег формы/ввода.

Ответ 2

Да, это возможно.

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

Добавив onchange="document.getElementById('formName').submit()" к каждому флажку, вы будете отправлять в любое время, когда будет установлен флажок.

Если вы в порядке с jQuery, это еще проще (и ненавязчиво):

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

Для любого количества флажков в вашей форме, когда происходит событие "change", отправляется форма. Это будет работать даже при динамическом создании дополнительных флажков с помощью метода .on().

Ответ 3

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

Хотя было бы лучше добавить классы в каждый из флажков и сделать

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

чтобы вы могли выбрать, какие флажки подают форму, а не все, что они делают.

Ответ 4

Я возился с этим около четырех часов и решил поделиться этим с вами.

Вы можете отправить форму, установив флажок, но странная вещь заключается в том, что при проверке отправки в php, вы можете ожидать, что форма будет установлена, когда вы отметите или снимите флажок. Но это не так. Форма только получает набор, когда вы на самом деле установите флажок, если вы снимите флажок не будет установлен. Слово, отмеченное в конце типа ввода флажка, заставит флажок отображаться флажком, поэтому если ваше поле отмечено, оно должно отражать это, как в примере ниже. Когда этот флажок снят, php обновляет состояние поля, в результате чего слово проверено исчезает.

Ваш HTML должен выглядеть так:

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

и 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;
      }
}