2012-05-15 4 views
20

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

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

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

ответ

40

В простом JavaScript просто положить

onChange="this.form.submit()" 

в виде/ввода тега.

+0

Ого, как то просто !! –

+0

Как добавить javascript для подтверждения? –

12

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

<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().

+0

Я внедрил этот код, однако, когда я устанавливаю флажок, результаты поиска не отображаются. Мне нужно изменить PHP-код? – user1394849

+0

Это не имеет ничего общего с PHP - проверьте свою консоль JavaScript, чтобы убедиться, что ошибок нет. Это работает, если вы нажмете кнопку «Отправить»? –

+0

никаких ошибок вообще, я пробовал оба предложения, которые вы мне дали. – user1394849

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

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

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

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

0

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

Вы можете отправить форму, установив флажок, но странно, что при проверке отправки в 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; 
     } 
} 
Смежные вопросы