ошибка средства выбора диапазона дат пользовательского интерфейса jquery «Не удается прочитать» свойство «слева от нуля»

#jquery #ruby-on-rails #jquery-ui

#jquery #ruby-on-rails #jquery-ui

Вопрос:

Я использую средство выбора диапазона дат пользовательского интерфейса jquery для rails 3.1. Мне удалось заставить это работать, но когда я пытаюсь использовать любой jquery внутри любого из файлов просмотра, я получаю эту ошибку (см. ее из консоли), которая гласит «daterangepicker.jQuery.js: 62 Uncaught TypeError: не удается прочитать свойство «слева» от null».

 var rangeInput = jQuery(this);

var options = jQuery.extend({
...
posX: rangeInput.offset().left,
...
})
  

Строка, о которой идет речь, является:

 posX: rangeInput.offset().left, // x position
  

Однако моя теория заключается в том, что источник проблемы проистекает из начала, где rangeInput определен в этой строке:

 var rangeInput = jQuery(this);
  

Возможно, это вызывается до того, как я фактически выбираю даты, из-за чего возникает ошибка и почему, похоже, она останавливает запуск моего jquery? Спасибо за любую помощь.

Комментарии:

1. Похоже, что в jQuery.extend () нет никакого аргумента «target». Это только из-за того, как вы усекли свой код?

2. Кроме того, какой код вызывает этот сегмент кода? Что такое $ (this) в этой ситуации?

3. Извините, Дэйв, $ (this) относится к моему текстовому полю, в котором запускается плагин. Еще одна странная проблема заключается в том, что если плагин используется в представлении, ошибка исчезает. Не замечал этого до недавнего времени. Но это означало бы, что для использования jquery на странице мне пришлось бы включить скрытый тег с daterangepicker…

4. Хорошо, итак, вы можете добавить код, который охватывает этот сегмент кода, который прояснит, что такое $ (this)? (Я согласен с решением ниже, звучит так, как будто $ (this) пусто, что привело бы к тому, что offset () будет равен нулю.)

5. @Dave спасибо за помощь. Приведенное ниже решение верно в том смысле, что оно пустое.

Ответ №1:

Попробуйте записать значение rangeInput , чтобы увидеть, является ли это пустым объектом jQuery. Это имело бы смысл, потому что jQuery().offset().left выдало бы ошибку, которую вы получаете.

Комментарии:

1. Спасибо за помощь. Вы были правы. Я не думал просто проверять, было ли оно пустым, теперь это простой оператор if else. Еще раз спасибо!