Adding an if statement inside if statement

Refresh

December 2018

Views

11.3k time

2

I have a function for a button which submits a form. This function checks to see if the 5 checkboxes are selected #co1,#co2,#co3,#div1,#cc1.

It then also checks to see if tcaccept select is set to 1. If so the form submits, else the alert pops up.

This is the code i have at the moment:

  $('#submit2pd').click(function(event) {
    var $finishBoxes = $('#co1,#co2,#co3,#div1,#cc1');

        if (!($finishBoxes.length == $finishBoxes.filter(':checked').length && $('#tcaccept').val() == '1' )) {
    alert('Please complete the Induction Checklist confirming that you have read and understood the Colleges main policies and procedures, agreeing to comply with these in line with the terms of your contract with the College');
            return false;
        }

        // otherwise the form is submitted
        window.location.href = "submit2pd.php";

    });

All works brilliantly, but i want to add to this line as i have another option that is required. But this needs to be an if statement.

    if (!($finishBoxes.length == $finishBoxes.filter(':checked').length && $('#tcaccept').val() == '1' && THE IF STATEMENT))

this is what i need to incorporate into the if statement above.

if ($("#ctl").val() == "1") {
$('#ctlapp') must not be blank
}
else if ($("#ctl").val() == "0") {
$('#ctlapp') can be blank
}

Any help would be greatly appreciated.

4 answers

1

Я бы сказал, что очистит код немного, и все будет получить немного проще:

$('#submit2pd').click(function(event) {
    var fail_message = 'Please complete the Induction Checklist confirming that you have read and understood the Colleges main policies and procedures, agreeing to comply with these in line with the terms of your contract with the College',
        $finishBoxes = $('#co1,#co2,#co3,#div1,#cc1'),
        $checkedBoxes = $finishBoxes.filter(':checked'),
        tcaccept = $('#tcaccept').val(),
        ctl = $("#ctl").val(),
        ctlapp = $('#ctlapp').val();

    if (tcaccept == '1' && $finishBoxes.length != $checkedBoxes.length ) {
        alert( fail_message );
        return false;
    } else if( ctl == "1" && ctlapp == "" ) {
        alert( "some other message" );
        return false;
    }

    // otherwise the form is submitted
    window.location.href = "submit2pd.php";
});

Я оставил тест на $('#ctl').val() == "0", потому что это звучит , как это только другое значение она может иметь, и нет никакой проверки , что должно иметь место , если это "0".

0

Используйте логику или ||захватить оба constalations:

$ ( "# CTL"). Вал () == "1" && $ ( '# ctlapp')! = ""

ИЛИ ЖЕ

$ ( "# CTL"). Вал () == "0"

if (
  !(
    $finishBoxes.length == $finishBoxes.filter(':checked').length 
  && 
    $('#tcaccept').val() == '1' 
  && 
    ( 
       ($("#ctl").val() == "1" && $('#ctlapp') != "")
    ||
       $("#ctl").val() == "0"
    )
  )
)
1
if($('#tcaccept').val() == '1' && validate()) {
 // do something
}

var validate = function(){
  if ($("#ctl").val() == "1") {
    $('#ctlapp') must not be blank
    return false;
  }
  else if ($("#ctl").val() == "0") {
    $('#ctlapp') can be blank;
    return true;
  }
  return true;
}
2

Как насчет:

if (!($finishBoxes.length == $finishBoxes.filter(':checked').length && 
    $('#tcaccept').val() == '1' && 
    !($("#ctl").val() == "1" && $('#ctlapp').val() === "")))

То , что мы добавим сюда еще одно условие , которое говорит: «И убедитесь , что это не тот случай, когда #ctlесть 1, и #ctlappявляется пустым».

Edit: и смотрите мой комментарий выше - ваш вопрос не о JQuery, форме или проверке. Это едва о JS.