Добавление переключателя «Я согласен» или чекбокса. Казалось бы, невозможно

#javascript #forms

#javascript #формы

Вопрос:

Я нахожусь на последней стадии выполнения задания по изменению системы, и мне нужно добавить флажок в стиле «iagree». Система уже не будет отправлять форму, если поля пусты, однако мне нужно, чтобы она не отправляла, т. е. всплывающее предупреждение. когда флажок «Я согласен» или переключатель не выбран. Я перепробовал миллион вещей, поэтому, если кто-нибудь сможет разобраться в этом, вы будете моим богом.

Ниже приведен мой javascript, который проверяет пустые поля и т.д. И отображает предупреждение. Мне нужно добавить к нему переключатель проверки с именем «согласен».

  <div class="internal_booking_form">
    <script type="text/JavaScript">
    <!--
  

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

  $(document).ready(function() {
          function recalculate() {
        var sum = 0;
        var base = 0;

        $("input[type=checkbox]:checked").each(function() {
             sum  = parseInt($(this).attr("rel"));
        });

        sum  =  parseInt($(":radio[name='duration']:checked").attr("rel"), 10);  // or some attribute that has the price
        $("#output").html(sum);
    }

        $("input[type=checkbox], :radio[name='duration']").change(function() {
        recalculate();
    });

    });
  

Это остальная часть кода, где, я полагаю, было бы лучше разместить функцию checkcheckbox

             function newPopup(url) {
                popupWindow = window.open(
            url,'popUpWindow','height=700,width=800,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes')
            }

    function checkForm() {
        var err=0;
        var msg2="";


    <?php
    $reqFields=array(
        "name",
        "phone",
        "email",
        "comments",
        "suburb",
        "postcode",
        "captcha"

    );

    foreach ($reqFields as $v) { ?>

        if (document.getElementById('<?php echo $v?>').value==0 || document.getElementById('<?php echo $v?>').value=="00") {
            if (err==0) {
                document.getElementById('<?php echo $v?>').focus();
            }
            document.getElementById('<?php echo $v?>').style.backgroundColor='#ffa5a5';
            err=1;
        }<?php




    }
    ?>

        var reg1 = /(@.*@)|(..)|(@.)|(.@)|(^.)/; // not valid
        var reg2 = /^. @([?)[a-zA-Z0-9-.] .([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/; // valid   
        if (document.getElementById('email').value==0 || !reg2.test(document.getElementById('email').value)) {
        if (err==0) {
            document.getElementById('email').focus();
        }
        document.getElementById('email').style.backgroundColor='#ffa5a5';
        err=1;
        }




    if (err==0) {
                 return true;
        } else {
            alert("Please complete all highlited fields to continue.");
            return false;
        }

    }

    function checkFieldBack(fieldObj) {
        if (fieldObj.value!=0) {
            fieldObj.style.backgroundColor='#EAEAEA';
        }
    }

    function checkNumeric(value){
            var anum=/(^d $)|(^d .d $)/
            if (anum.test(value))
                return true;
            return false;
        }


    function noAlpha(obj){
        reg = /[^0-9.,]/g;
        obj.value =  obj.value.replace(reg,"");
     }

    //-->
    </script> 
    <form name="ff1" enctype="multipart/form-data" method="post" action="booking.event.processing.php" onsubmit="return checkForm();"> 
  

Ответ №1:

Я предполагаю, что ваш флажок «iagree» имеет идентификатор iagree. Если вы вставляете

 if( !$('input#iagree').is(":checked") ) {
   err = 1;
}

if (err==0) {
...
  

это должно сработать. Вы можете добавить дополнительное поле сообщения, если вам нужна явная информация для согласия с чем-либо.