web-dev-qa-db-ja.com

チェックボックスがチェックされているときにフォームを送信する

チェックボックスがチェックされているときにフォームを送信する方法はありますか?

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

それは現在私が持っているものですが、ユーザーがチェックボックスをオンまたはオフにしたときに、送信ボタンなしでフォームを送信したいと思います。何か助け?

30
user1394849

単純なJavaScriptでは

onChange="this.form.submit()"

form/inputタグに。

63
Sliq

はい、これは可能です。

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

フォーム内の任意の数のチェックボックスについて、「変更」イベントが発生すると、フォームが送信されます。 .on()メソッドのおかげで動的にさらにチェックボックスを作成する場合でも、これは機能します。

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

おそらく、各チェックボックスにクラスを追加して、

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

すべてのチェックボックスがフォームを送信するのではなく、送信するチェックボックスを選択できます。

3
Gorving

私はこれを約4時間いじっていましたが、これをあなたと共有することにしました。

チェックボックスをクリックしてフォームを送信できますが、奇妙なことは、PHPで送信をチェックするときに、チェックボックスをオンまたはオフにするとフォームが設​​定されることを期待することです。しかし、これはtrueではないです。このフォームは、実際にcheckチェックボックスをオンにした場合にのみ設定されます。チェックを外すと設定されません。チェックボックス入力タイプの最後でチェックされたWordは、チェックボックスをチェック済みとして表示するため、フィールドがチェックされている場合は、下の例のようにフィールドを反映する必要があります。チェックされていない場合、phpはフィールドの状態を更新し、Wordがチェックされて消えます。

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