2014-12-24 3 views
0

С кодом что-то не так? Потому что, когда я удаляю OR в выражении, я получаю правильный вывод, но когда я вставляю ||, вывод, который я получаю, это то, что находится в инструкции, где находится оператор OR.Не определено или не работает

$(document).ready(function(){ 
     $("#select1").change(function(){ 
      if($(event.target).val() == 'AK'){ 
        $("#select2").change(function(){ 
         if($(event.target).val() == 'LLC'){ 
          $('#txt6').val('250.00'); 
         }else{ 
          $('#txt6').val('250.00'); 
         } 
        }); 
       }else if($(event.target).val() == 'AR' || 'CO' || 'HI' || 'IA' || 'MS'){ 
        $("#select2").change(function(){ 
         if($(event.target).val() == 'LLC'){ 
          $('#txt6').val('50.00'); 
         } else{ 
          $('#txt6').val('50.00'); 
         } 
        }); 
      }else 
      if($(event.target).val() == 'AZ'){ 
        $("#select2").change(function(){ 
         if($(event.target).val() == 'LLC'){ 
          $('#txt6').val('50.00'); 
         } else{ 
          $('#txt6').val('60.00'); 
         } 
        }); 
       }else 
}else 
     if($(event.target).val() == 'WI'){ 
       $("#select2").change(function(){ 
        if($(event.target).val() == 'LLC'){ 
         $('#txt6').val('103.00'); 
        } else{ 
         $('#txt6').val('103.00'); 
        } 
       }); 
      }else 
     { 
      $("#select2").change(function(){ 
        if($(event.target).val() == 'LLC'){ 
         $('#txt6').val('186.00'); 
        } else{ 
         $('#txt6').val('186.00'); 
        } 
       }); 
     } 
    }); 
}); 
+1

Является ли это действительным, если заявление? $ (event.target) .val() == 'AR' || 'CO' || 'HI' || 'IA' || 'МИЗ'. Не должно быть $ (event.target) .val() == 'AR' || $ (event.target) .val() == 'CO' || $ (event.target) .val() == 'HI' || $ (event.target) .val() == 'IA' || $ (event.target) .val() == 'MS'? – bksi

ответ

3

Вы не можете сделать это:

$(event.target).val() == 'AR' || 'CO' || 'HI' || 'IA' || 'MS' 

Как это переводится так:

($(event.target).val() == 'AR') || ('CO') || ('HI') || ('IA') || ('MS') 

Который переводит к этому:

(<true/false>) || true || true || true || true 

Что вам нужно:

$(event.target).val() == 'AR' || 
$(event.target).val() == 'CO' || 
$(event.target).val() == 'HI' || 
$(event.target).val() == 'IA' || 
$(event.target).val() == 'MS' 

В качестве альтернативы, вы можете сделать это:

var allowed = ['AR', 'CO', 'HI', 'IA', 'MS']; 

if ($.inArray($(event.target).val(), allowed)) {...} 
2
$(event.target).val() == 'AR' || 'CO' || 'HI' || 'IA' || 'MS' 

Должно быть

$(event.target).val() == 'AR' || $(event.target).val() == 'CO' || $(event.target).val() == 'HI' || $(event.target).val() == 'IA' || $(event.target).val() == 'MS' 

Это небольшая ошибка люди делают, они думают, что правильно, но писать не так. Потому что обычно мы думаем:

if value equals to xyz or pqr 

и мы пишем

if(value == "xyz" || "pqr") 

что неправильно, мы сделали эту ошибку, потому что мы были в потоке слов. Это должно быть

if(value == "xyz" || value == "pqr") 

вместо этого.

0

Эта линия

}else if($(event.target).val() == 'AR' || 'CO' || 'HI' || 'IA' || 'MS'){ 

по ошибке.

нужно что-то вроде

}else if($(event.target).val() == 'AR' || $(event.target).val() == 'CO' || $(event.target).val() =='HI ... 
0

|| соединяет отдельные и независимые логические условия, а не строковые значения.

Вы можете сделать это вместо:

if (/^(AR|CO|HI|IA|MS)$/.test($(event.target).val())) 
+1

Это не то же самое, что и равенство - возможно, 'if (/^(AR | CO | HI | IA | MS) $ /. Test ($ (event.target) .val()))' будет лучше –

+0

@EdHeal Благодарю. Ты прав. Обновлено. – Sheepy

Смежные вопросы