Условно для Multi Select только для определенных опций - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть мультиселект, где мне нужно показать / скрыть другой выбор на основе параметров, выбранных в первом выборе. Есть 3 варианта, которые должны вызвать появление другого выбора - все остальные параметры не должны вызывать каких-либо изменений.

У меня работает, если индивидуально выбраны опции. Однако если один из параметров выбран вместе с любыми другими параметрами, он не работает.

В связи с ограничениями CMS Я не могу добавить классы к опциям.

Это мой текущий код jQuery.

$('#freeform_how_would_you_best_describe_your_companys_research_activity').change(function() {

            var selectedItems

            if ($(this).val() == 'Drug Discovery/Development' || $(this).val() == 'Therapeutics' || $(this).val() == 'Vaccines' ) {
                $('label[for="freeform_tell_us_more_about_your_research_activity"], select#freeform_tell_us_more_about_your_research_activity').slideDown();
            } else {
                $('label[for="freeform_tell_us_more_about_your_research_activity"], select#freeform_tell_us_more_about_your_research_activity').slideUp();
            }
        });

Пожалуйста, сообщите

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Некоторые дополнительные поиски и эксперименты позже я нашел решение

        $('#freeform_how_would_you_best_describe_your_companys_research_activity').change(function() {

            var values = $(this).val();
            console.log(values)

            if(values.includes("Vaccines")|| values.includes("Therapeutics") || values.includes("Drug Discovery/Development")){
                $('label[for="freeform_tell_us_more_about_your_research_activity"], select#freeform_tell_us_more_about_your_research_activity').slideDown();
            } else {
               $('label[for="freeform_tell_us_more_about_your_research_activity"], select#freeform_tell_us_more_about_your_research_activity').slideUp();
            }
        });
0 голосов
/ 08 апреля 2019

Multiselect .val() возвращает массив , а не одно значение .Примите это во внимание.

$('#sel').change(function() {
  var arr = $(this).val();
  if (arr.indexOf('one') > -1 || arr.indexOf('two') > -1 || arr.indexOf('three') > -1) {
    console.log('do this');
  } else
    console.log('do that');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="sel" multiple size="5">
  <option>one</option>
  <option>two</option>
  <option>three</option>
  <option>else</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...