JQuery UI datepicker заставляет экран прокручиваться к началу после выбора даты - PullRequest
7 голосов
/ 10 августа 2010

У меня есть пара сборщиков дат jQuery в диалоге jQuery. Всякий раз, когда пользователи выбирают дату из средства выбора даты, экран прокручивается вверх. Это происходит только в IE8, а не в Firefox 3.6 или Chrome 5. Поскольку большинство пользователей будут использовать IE, это будет очень раздражать. Кто-нибудь может дать мне понять, почему это происходит?

Вот фрагмент HTML для диалога:

 <div id="AppointmentDialog" style="display: none; font-size: 12px;">
    <table>
        <tr class="lesson notAvailable allDay">
            <td>
                Start
            </td>
            <td>
                <input id="txtStartDate" type="text" readonly="readonly" style="width: 90px" class="lesson notAvailable allDay" />
                <input id="txtStartTime" type="text" style="width: 50px" class="lesson notAvailable" />
                <input id="hidStartTime" type="hidden" value="" />
            </td>
        </tr>
        <tr class="notAvailable allDay">
            <td>
                End
            </td>
            <td>
                <input id="txtEndDate" type="text" readonly="readonly" style="width: 90px" class="notAvailable allDay" />
                <input id="txtEndTime" type="text" style="width: 50px" class="notAvailable" />
                <input id="hidEndTime" type="hidden" value="" />
            </td>
        </tr>
    </table>
</div>

Фрагмент Javascript для инициализации диалога и средств выбора даты:

$(document).ready(function() {
    initDialogs();
});

function initDialogs() {
    // Configure the New Appointment dialog
    $("#AppointmentDialog").dialog({
        autoOpen: false,
        resizable: false,
        width: 320,
        modal: true,
        title: 'Appointment',
        buttons: {
            "Close": function() { $(this).dialog("close"); },
            "Save": function() {
                // Function call
            }
        }
    });

    $.mask.definitions['h'] = '[012]';
    $.mask.definitions['m'] = '[012345]';
    $("#txtStartTime").mask("h9:m9");
    $("#txtEndTime").mask("h9:m9");

    // Init date pickers
    $("#txtStartDate").datepicker({ dateFormat: 'dd-mm-yy' });
    $("#txtEndDate").datepicker({ dateFormat: 'dd-mm-yy' });
};

EDIT

Я использую jQuery 1.4.2 и пользовательский интерфейс 1.8.2

Ответы [ 4 ]

6 голосов
/ 23 сентября 2010

Я снова посмотрел на это.Об ошибке сообщается с обходным решением .

Я использую уменьшенную версию jQuery UI, поэтому код выглядит следующим образом:

(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>"

(B?" ui-priority-secondary":"")+'" href="javascript:;">'+q.getDate()+"</a>")+"</td>"
3 голосов
/ 12 января 2011

У меня была именно эта проблема, но настоящей проблемой оказалось дублирование идентификаторов на странице. Как только я удалил дубликат идентификатора, проблема полностью исчезла.

1 голос
/ 28 февраля 2018

Мне не разрешали трогать библиотеки js, я добавил эту строку в обработчик onSelect.

$('#ui-datepicker-div table td a').attr('href', 'javascript:;');

, поэтому мой код выглядел как

            $('#txtDate').datepicker({
                    // other properties
                    onSelect: function (selectedDate) {
                        $('#ui-datepicker-div table td a').attr('href', 'javascript:;');
                        // other code
                    }
                });
0 голосов
/ 07 февраля 2017

Вам необходимо переопределить местозаполнитель «$» с помощью «jQuery», если текст содержит «#»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...