Раскрывающийся список с несколькими вариантами выбора в Selectize.js закрывается при нажатии на полосу прокрутки раскрывающегося списка

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

Когда я пытаюсь щелкнуть ручку на полосе прокрутки раскрывающегося списка параметров, чтобы перетащить список (чтобы я мог видеть другие параметры), раскрывающийся список закрывается.

Какой параметр конфигурации Selectize.js мне нужно установить, чтобы я мог прокручивать раскрывающийся список параметров?

Незначительные изменения формулировок для удобства чтения

GhostCat 21.08.2018 13:07

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

benvc 22.08.2018 06:20

benvc, оказывается, проблема заключается в конфликте между обработчиками кликов в selectize и страницей, на которой я его использую. Причина, по которой CodePen работает, заключается в том, что в CodePen нет ничего, кроме выделенного списка. В моем веб-приложении проблема все еще возникает. У вас есть предложения, как я могу определить, какой обработчик кликов «крадет» фокус из моего списка выбора? Я пробовал использовать инструмент глобального события щелчка мыши в Chrome, но не нашел проблемы.

user2505564 23.08.2018 23:18

К сожалению, это звучит так, будто закатываешь рукава и начинаешь что-то копать. Если вы можете выделить достаточно небольшой фрагмент проблемного кода, который вы не можете полностью исправить, не стесняйтесь задавать другой вопрос.

benvc 24.08.2018 06:03

Спасибо, ты прав. Я обнаружил, что существует конфликт между компонентом selectize и jQuery-UI Library Draggable. Перетаскиваемый компонент назначается элементу Div, который включает поля в моей всплывающей форме, включая выделенный список. Комментирование перетаскиваемого назначения позволяет выделенному списку работать, но форма больше не может перемещаться. В назначении я использую функцию дескриптора, чтобы ограничить перетаскиваемую функцию областью заголовка формы, $ ('#songData') .draggable ({handle: '#songDataTitle'}), которая не включает выделенный список.

user2505564 24.08.2018 19:42

Вот ссылка на CodePen: codepen.io/howardb1/pen/aazWwY

user2505564 25.08.2018 05:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
770
1

Ответы 1

Обнаружена проблема!

Симптом: Оказывается, существует конфликт между подключаемым модулем selectized.js и компонентом перетаскивания jQuery-UI.

Хотя демонстрация CodePen работает нормально, проблема все еще возникает в моем веб-приложении. Одним из многих отличий простой демонстрации CodePen от моего веб-приложения является использование компонента jQuery-UI Draggability в веб-приложении.

Доказательство: С компонентом перетаскивания, прикрепленным к div, который включает всплывающую форму, которая включает выделенный список, фокус крадется из списка выбора при щелчке / перетаскивании полосы прокрутки списка. Комментирование - перетаскиваемое назначение позволяет списку выбора работать нормально, включая полосу прокрутки.

Странно то, что я использую функцию дескриптора перетаскиваемого компонента, чтобы ограничить перетаскивание в область заголовка в верхней части всплывающей формы, которая не включает список выбора, который, как я думал, вызвал бы перетаскиваемый щелчок / drag, чтобы воздействовать только на область заголовка, но очевидно, что это не так. Если перетаскиваемое назначение не закомментировано, функция перетаскивания выполняется только с использованием области заголовка, но полоса прокрутки списка выбора не работает, когда по ней щелкают. Однако комментирование назначения заставляет полосу прокрутки списка работать должным образом.

Решение: Помимо поиска другого способа сделать форму перетаскиваемой, я хотел придерживаться библиотеки jQuery-UI, потому что я использую ее для других функций. Я обнаружил, что вместо создания перетаскиваемого компонента в форме мне нужно было создать компонент, когда указатель мыши перемещается по заголовку формы, и удалить компонент, когда указатель мыши отодвигается от заголовка формы. Я пробовал просто включать и отключать компонент, но это не сработало.

Вот ссылка на CodePen: https://codepen.io/howardb1/pen/aazWwY.

<div id = "songData"
     style = "position: absolute; left: 626px; top: 8px; z-index: 99;
            width: 672px; min-height: 423px; max-height: 635px;
            padding: 0 28px 28px 28px; border: 5px double black;
            background-color: white; color: black;">
  <!-- **********************************************************************

       Prevent the songData 'form' area dragging when the mouse isn't over
       the songData Title.

       This prevents a problem with the selectize drop-down list that causes
       the list to loose focus when the options scrollbar is clicked.

       ****************************************************************** -->

  <div id = "songDataTitle"
       style = "margin-left: -28px; padding: 28px; height: 20px; width: 100%;
              text-align: center; font-size: 20px; font-weight: bold;
              cursor: move;"
       onmouseover = "songData_dragable( true );"
       onmouseout = "songData_dragable( false );">
    Song Information Form
  </div>

  <script>
    function songData_dragable( mode ) {

      if ( !mode  )

        $( '#songData' ).draggable( 'destroy' );

      else

        $( '#songData' ).draggable( { handle : '#songDataTitle' } );

      // End of if ( !mode  ) ... else ...

    } // End of songData_dragable( mode ) function.
  </script>

<!-- rest of the web-page goes here -->

Другие вопросы по теме