Есть идеи, как заставить DatePicker отображаться в конце связанного текстового поля, а не прямо под ним? Что обычно происходит, так это то, что текстовое поле находится в нижней части страницы, а DatePicker перемещается вверх, чтобы учесть это, и полностью закрывает текстовое поле. Если пользователь хочет ввести дату, а не выбрать ее, он не сможет. Я бы предпочел, чтобы он отображался сразу после текстового поля, поэтому не имеет значения, как он настраивается по вертикали.
Есть идеи, как контролировать позиционирование? Я не видел никаких настроек для виджета, и мне не повезло с настройкой настроек CSS, но я легко мог что-то упустить.
Ответы:
Принятый ответ на этот вопрос на самом деле не для jQuery UI Datepicker. Чтобы изменить положение jQuery UI Datepicker, просто измените .ui-datepicker в файле css. Размер Datepicker также можно изменить таким же образом, просто отрегулируйте размер шрифта.
источник
Вот что я использую:
Вы также можете добавить немного больше к левому полю, чтобы оно не совпадало с полем ввода.
источник
$(this).position(my:'left top', at:'left bottom', of:'#altField')
(поскольку я используюaltField
опциюЯ делаю это прямо в CSS:
Мои поля ввода даты имеют ширину 100 пикселей. Я также добавил z-index, чтобы календарь также отображался над всплывающими окнами AJAX.
Я не изменяю файл CSS jquery-ui; Я перегружаю класс в моем основном файле CSS, поэтому я могу изменить тему или обновить виджет без повторного ввода моих конкретных модов.
источник
Вот мой вариант выравнивания календаря Datepicker.
Я думаю, что это довольно приятно, потому что вы можете управлять позиционированием с помощью jQuery UI Position util.
Одно ограничение: требуется jquery.ui.position.js.
Код:
источник
afterShow
методе.Вот еще один вариант, который мне подходит: отрегулируйте rect.top + 40, rect.left + 0 в соответствии с вашими потребностями:
источник
Это работает для меня:
источник
Во-первых, я думаю, что
afterShowing
в объекте datepicker должен быть метод, где вы могли бы изменить позицию после того, как jquery выполнил все свое вуду в_showDatepicker
методе. Кроме того, такжеpreferedPosition
был бы желателен вызываемый параметр , чтобы вы могли установить его, а jquery изменить его в случае, если диалог отображается за пределами области просмотра.Есть «трюк», чтобы сделать это последнее. Если вы изучите
_showDatepicker
метод, вы увидите использование частной переменной$.datepikcer._pos
. Эта переменная будет настроена, если ее еще никто не настраивал. Если вы измените эту переменную перед отображением диалогового окна, JQuery примет ее и попытается выделить диалоговое окно в этой позиции, а если он отображается за пределами экрана, он настроит его, чтобы убедиться, что он виден. Звучит хорошо, а?Проблема в том;
_pos
является частным, но если вы не против. Ты можешь:Но будьте осторожны с обновлениями Jquery-ui, потому что изменение внутренней реализации
_showDatepicker
может нарушить ваш код.источник
Мне нужно было расположить datepicker в соответствии с родительским div, в котором находился мой элемент управления вводом без полей. Для этого я использовал утилиту "position", включенную в ядро jquery UI. Я сделал это на мероприятии beforeShow. Как другие комментировали выше, вы не можете установить позицию непосредственно в beforeShow, так как код datepicker сбросит местоположение после завершения функции beforeShow. Чтобы обойти это, просто установите позицию с помощью setInterval. Текущий сценарий завершится, и появится указатель даты, а затем код изменения положения будет запущен сразу после того, как указатель даты станет видимым. Хотя этого никогда не должно происходить, но если указатель даты не отображается через 0,5 секунды, код имеет отказоустойчивый режим, позволяющий отказаться и очистить интервал.
источник
привязать focusin после использования datepicker изменить css виджета datepicker желаю помощи
источник
Я исправил это с помощью собственного кода jquery.
дал моему полю ввода datepicker класс " .datepicker2 "
найти его текущее положение сверху и
разместил всплывающее окно с именем класса " .ui-datepicker "
вот мой код.
здесь «40» - это мой ожидаемый пиксель, вы можете поменять его на свой.
источник
исправить проблему отображения позиции daterangepicker.jQuery.js
источник
Очень простая функция jquery.
источник
Я потратил невероятное количество времени, пытаясь понять эту проблему, на нескольких страницах нового сайта, который я разрабатываю, и ничего не работало (включая любое из различных решений, представленных выше, которые я реализовал. Я предполагаю, что jQuery только что изменился вещей достаточно, так как им было предложено, что решения больше не работают. Я не знаю. Честно говоря, я не понимаю, почему в jQuery ui не реализовано что-то простое, чтобы настроить это, как кажется довольно большая проблема с календарем, который всегда появляется в некоторой позиции значительно дальше по странице от входа, к которому он прикреплен.
Как бы то ни было, мне нужно было конечное решение, которое было бы достаточно общим, чтобы я мог использовать его где угодно, и оно работало бы. Кажется, я наконец пришел к выводу, что позволяет избежать некоторых из более сложных и специфичных для кода jQuery ответов, приведенных выше:
jsFiddle: http://jsfiddle.net/mu27tLen/
HTML:
JS:
По сути, я прикрепляю новый тег стиля к заголовку перед каждым событием "show" datepicker (удаляя предыдущий, если он есть). Такой метод работы позволяет обойти большинство проблем, с которыми я столкнулся во время разработки.
Протестировано в Chrome, Firefox, Safari и IE> 8 (поскольку IE8 плохо работает с jsFiddle, и я теряю желание заботиться о
Я знаю, что это смесь контекстов jQuery и javascript, но на данный момент я просто не хочу прикладывать усилия для преобразования его в jQuery. Я знаю, было бы просто. Я так покончил с этим прямо сейчас. Надеюсь, это решение поможет кому-то другому.
источник
Они изменили название класса на
ui-datepicker-trigger
Так что это работает в
jquery 1.11.x
источник
Я взял это из (( Как управлять позиционированием jQueryUI datepicker ))
$ .extend ($. datepicker, {_checkOffset: function (inst, offset, isFixed) {return offset}});
оно работает !!!
источник
Или вы можете использовать событие focus для объекта dateSelect и позиционирования api вместе. Вы можете поменять местами верх, низ и лево на правое или центральное (или действительно все, что вы хотите из позиции api). Таким образом, вам не нужен интервал или какое-либо безумно сложное решение, и вы можете настроить макет в соответствии со своими потребностями в зависимости от того, где находится ввод.
источник
Также стоит отметить, что если IE перейдет в режим причуд, ваши компоненты пользовательского интерфейса jQuery и другие элементы будут расположены неправильно.
Чтобы убедиться, что вы не попадете в режим причуд, убедитесь, что вы правильно установили свой doctype на последнюю версию HTML5.
Использование transitional приводит к беспорядку. Надеюсь, это кому-то сэкономит время в будущем.
источник
Это помещает функциональность в метод с именем function, позволяя вашему коду инкапсулировать ее или сделать метод расширением jquery. Просто используется в моем коде, отлично работает
источник
В Jquery.UI просто обновите функцию _checkOffset, чтобы viewHeight был добавлен в offset.top до того, как смещение будет возвращено.
источник
источник
источник