Ответ 1
Вы должны переписать его следующим образом:
case 'CRP':
case 'COO':
case 'FOU':
$('#jurd_tp_id').val(data);
break;
Вы можете увидеть его в документе switch
. Здесь описывается поведение последовательных операторов case
без break
между ними (называемое "провалом" ):
Дополнительный оператор break, связанный с каждым ярлыком case, гарантирует, что программа выйдет из коммутатора после выполнения согласованного оператора и продолжит выполнение в инструкции следующего коммутатора. Если разрыв пропущен, программа продолжает выполнение в следующем выражении в инструкции switch.
Что касается того, почему ваша версия работает только для первого элемента (CRP
), это просто потому, что выражение 'CRP'||'COO'||'FOU'
оценивается как 'CRP'
(поскольку непустые строки оцениваются в true
в булевом контексте). Так что оператор case
эквивалентен только case 'CRP':
после его вычисления.