Добавление оператора if внутри оператора if - PullRequest
2 голосов
/ 30 ноября 2011

У меня есть функция для кнопки, которая отправляет форму.Эта функция проверяет, установлены ли 5 ​​флажков # co1, # co2, # co3, # div1, # cc1.

Затем она также проверяет, установлено ли значение tcaccept select в 1. Если это так, то формаотправляет, в противном случае выдается предупреждение.

Это код, который у меня есть на данный момент:

  $('#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";

    });

Все работает блестяще, но я хочу добавить в эту строку, так как у меня есть другой вариантэто требуется.Но это должно быть утверждение if.

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

Это то, что мне нужно включить в приведенное выше утверждение if.

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

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

2 голосов
/ 30 ноября 2011

Как насчет:

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

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

Изменить: и, пожалуйста, смотрите мой комментарий выше - ваш вопрос не о jQuery, формах или проверке. Это только о JS.

1 голос
/ 30 ноября 2011

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

$('#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".

1 голос
/ 30 ноября 2011
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;
}
0 голосов
/ 30 ноября 2011

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

$ ("# ctl"). Val () == "1" && $ ('# ctlapp')! = ""

ИЛИ

$ ("# ctl"). Val () == "0"

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