Вопрос по javascript, checkbox, php, search – отправка формы при установленном флажке

24

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

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

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

Ваш Ответ

4   ответа
3
$(document).ready(
    function()
    {
        $("input:checkbox").change(
            function()
            {
                if( $(this).is(":checked") )
                {
                    $("#formName").submit();
                }
            }
        )
    }
);

вероятно, было бы лучше добавить классы к каждому из флажков и сделать

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

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

53

В простом JavaScript просто

onChange="this.form.submit()"

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
2

Вы можете отправить форму, установив флажок, но странная вещь заключается в том, что при проверке отправки в php, вы можете ожидать, что форма будет установлена, когда вы отметите или снимите флажок. Но этоis not true, Форма устанавливается только тогда, когда вы на самом делеcheck флажок, если вы снимите его, он не будет установлен. Слово, отмеченное в конце типа ввода флажка, заставит флажок отображаться флажком, поэтому если ваше поле отмечено, оно должно отражать это, как в примере ниже. Когда этот флажок снят, 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;
      }
}
13

<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();
    });
});

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

Error: User Rate Limit Exceeded user1394849
Error: User Rate Limit Exceeded user1394849
Error: User Rate Limit Exceeded user1394849
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы