Как вы делаете javascript «если» заявление с «и» и «или»?

0

Я пытаюсь создать страницу, на которой вы заполняете некоторые поля ввода и проверяете переключатель, и если вы заполните все это, вы можете щелкнуть div, и анимация произойдет. Конкретные поля ввода не являются единственными на странице. Я пытаюсь использовать оператор javascript "if", в котором есть скобки "и" и "или" в круглых скобках, но когда я открываю страницу, код не запускается. Это не весь мой код, и я знаю, что javascript и его библиотеки связаны, потому что я некоторое время кодировал этот сайт, и все работает до сих пор. Я проверил код в валидаторе JavaScript, и это выглядело прекрасно. Я не уверен, что я делаю неправильно.

$(document).ready(function(){
    if ( $(".managementCompanyName").val() !== '' && 
     $(".approvedBy").val() !== '' && 
     $(".contractStartDate").val() !== '' && 
     $(".proposalNumber").val() !== '' && 
     $(!$("input[name='proposalReviewedForInvoice']:checked").val() || !$("input[id='proposalNotReviewedForInvoice']:checked").val()) )  {
        //do stuff
    }
});

В качестве альтернативы у меня есть

$(document).ready(function(){
    if (   $(".managementCompanyName").val() !== "" && 
       $(".approvedBy").val() !== "" && 
           $(".contractStartDate").val() !== "" && 
       $(".proposalNumber").val() !== "" && 
       $("input[name='proposalReviewedForInvoice']:checked").val() !== "" )  {
           //do stuff
    }
});

Этот код, похоже, работает с другой частью сайта, где в качестве требования требуется только один вход. Спасибо, если вы заметите мою ошибку.

  • 0
    Что говорит консоль ошибок?
  • 0
    || связывает сильнее, чем && , см. приоритет оператора
Теги:

2 ответа

4

Оберните || часть в круглых скобках, в противном случае первый операнд || на самом деле является последним результатом последнего &&.

/*$*/(!$("input[name='proposalReviewedForInvoice']:checked").val() ||  
      !$("input[id='proposalNotReviewedForInvoice']:checked").val()) )  {

И на самом деле кажется, что вы скорее сделали их завернутыми в $(), которые всегда будут возвращать объект jQuery, который всегда будет "правдивым" в этом состоянии.

0

для обработки ошибок намного лучше, если вы использовали только условие "ИЛИ (||)".

$(document).ready(function(){
    var management = $(".managementCompanyName").val();
    var approved = $(".approvedBy").val();
    var contract = $(".contractStartDate").val();
    var proposed_num = $(".proposalNumber").val();
    var proposed_rev = $("input[name='proposalReviewedForInvoice']:checked").val();

    if ( management == '' || approved == '' || contract == '' || proposed_num == ''
         || proposed_rev == '' ) {
        // error message
    } else {
        // do stuff
    }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню