Как сделать так, чтобы поле ввода в форме можно было кликнуть?

Я интегрировал кастомный плагин для плавной прокрутки между секциями одностраничного сайта. Однако в последней секции, содержащей форму, поля стали нечувствительными к клику. Можете ли вы помочь разобраться в причинe этой проблемы? Вот код плагина: 
<pre><code class="javascript">$.fn.wheel = function (callback) {
    return this.each(function () {
        $(this).on('mousewheel DOMMouseScroll', function (e) {
            e.delta = null;
            if (e.originalEvent) {
                if (e.originalEvent.wheelDelta) e.delta = e.originalEvent.wheelDelta / -40;
                if (e.originalEvent.deltaY) e.delta = e.originalEvent.deltaY;
                if (e.originalEvent.detail) e.delta = e.originalEvent.detail;
            }

            if (typeof callback == 'function') {
                callback.call(this, e);
            }
        });
    });
};

(function($){
    $.fn.extend({
        pageScroller: function(options) {
            this.defaultOptions = {
                travelTime:1000,
                afterTravelTimeout:1,
                travelEasing:'swing',
                startingPage:0,
                anchors:[],
                scrollableClasses: 'section',
                onTrigger : function(none, targets) {},
                onEnd : function(none, targets) {}
            };

            var settings = $.extend({}, this.defaultOptions, options);
            // Добавляем стили для скрытия скроллбара
            const styles = `
                &lt;style&gt;
                    ${settings.scrollableClasses} {
                        overflow-y: auto; /* Позволяет вертикальную прокрутку */
                        -ms-overflow-style: none;  /* Internet Explorer */
                        scrollbar...
  • 7 ноября 2024 г. 20:23
Ответы на вопрос 2
Проблема с полями ввода, которые не реагируют на клики, скорее всего, связана с тем, что ваш плагин для плавной прокрутки обрабатывает события мыши (такие как колесо мыши) и, возможно, блокирует стандартное поведение при взаимодействии с элементами управления формами. Вот несколько возможных решений, которые могут помочь:

1. **Добавьте обработку событий для полей ввода**: Измените логику вашего плагина, чтобы он не обрабатывал события, если клик происходит на элементе поля ввода. Это можно сделать, добавив проверку в вашем обработчике событий.

2. **Игнорируйте события на полях ввода**: Вы можете добавить проверку в вашем функцие "wheel", чтобы игнорировать обработку, если элемент имеет тип 'input', 'textarea' или любой другой элемент формы.

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

```javascript
$.fn.wheel = function (callback) {
    return this.each(function () {
        $(this).on('mousewheel DOMMouseScroll', function (e) {
            // Проверяем, если клик произошел на элементе ввода
            if ($(e.target).is('input, textarea')) {
                return; // Игнорируем событие
            }

            e.delta = null;
            if (e.originalEvent) {
                if (e.originalEvent.wheelDelta) e.delta = e.originalEvent.wheelDelta / -40;
                if (e.originalEvent.deltaY) e.delta = e.originalEvent.deltaY;
                if (e.originalEvent.detail) e.delta = e.originalEvent.detail;
            }

            if (typeof callback == 'function') {
                callback.call(this, e);
            }
        });
    });
};
```

3. **Обработчик для полей ввода**: Вы можете также добавить обработчик событий нажатия клавиш и прокрутки для полей ввода, чтобы они не перехватывали события.

4. **Проверка на наличие z-index**: Убедитесь, что нет никаких скрытых элементов (например, наложенных div или других элементов), которые могут блокировать клики на ваших полях ввода. Проверьте свойства CSS, такие как `z-index`, и убедитесь, что поля ввода находятся на переднем плане.

5. **Использование CSS для указания фокуса**: Иногда стили могут препятствовать кликам. Убедитесь, что у вас нет стилей, таких как `pointer-events: none;`, которые могли бы предотвратить взаимодействие.

Попробуйте внести указанные изменения и проверьте, решает ли это вашу проблему.
1) Данный код ничего в плане понимания проблемы не дает 
2) Неработающий/работающий неверно код большого объема желательно вносить в фиддл, чтобы смотреть на живой пример, а не на абстрактные "два поля".
3) Рискну предположить что элементы лежат в области, накрытой другим элементом, по этому клик по ним не проходит, смотрите какие элементы у вас в этой области. Что-то более конкретное можно сказать только по "живому" примеру.
Похожие вопросы