Страница автоматически переходит наверх при первом открытии динамического диалогового окна jquery

Я разрабатываю надстройку Word панели задач, используя JavaScript API, я использовал приведенный ниже код для динамического создания диалогового окна jQuery с использованием функции:

function myConfirm(dialogText, okFunc, cancelFunc, dialogTitle) {
        $('<div style="padding: 10px; max-width: 500px; word-wrap: break-word;">' 
                              + dialogText + '</div>').dialog({
            draggable: true,
            modal: true,
            resizable: false,
            width: 'auto',
            title: dialogTitle || 'Confirm',
            minHeight: 75,
            position: {
                my: "center",
                at: "center",
                of: window
            },
            buttons: {
                OK: function() {
                    if (typeof(okFunc) == 'function') {
                        setTimeout(okFunc, 50);
                    }
                    $(this).dialog('destroy');
                },
                Cancel: function() {
                    if (typeof(cancelFunc) == 'function') {
                        setTimeout(cancelFunc, 50);
                    }
                    $(this).dialog('destroy');
                }
            }
        });
    }

Но когда я открываю его в первый раз, чтобы вызвать функцию myConfirm, прокрутка страницы идет вверх, и когда я прокручиваю вниз, чтобы щелкнуть диалоговое окно, он снова отправляет прокрутку обратно вверх, тогда мне нужно снова прокрутить вниз, теперь я могу нажмите на кнопки диалогового окна. он отлично работает после первого.

Мне нужно динамически установить текст поля и функцию при нажатии кнопки, поэтому я создаю его динамически. Я также проверил его в Internet Explorer, он отлично работает.

Пожалуйста, посоветуйте, как я могу исправить это для надстройки Word.


person Amit    schedule 26.01.2017    source источник
comment
Как вы называете эту функцию? Это случайно не <a href="#" />?   -  person Rory McCrossan    schedule 26.01.2017
comment
@RoryMcCrossan Нет метода щелчка внутренней привязки, я также использую e.preventDefault(); внутри метода щелчка якоря.   -  person Amit    schedule 26.01.2017


Ответы (1)


Вы можете попробовать код ниже, когда вызываете свою функцию: -

onclick="myConfirm();return false;"

Просто добавьте «вернуть ложь»; после имени вашей функции, как показано выше.

Редактировать 1:-

Или вы также можете вернуть false из своей функции.

Редактировать 2 :-

$form.show().dialog({
                close: function (event) { event.preventDefault(); }
                resizable: false,
                etc....
            });
person Anand Systematix    schedule 26.01.2017
comment
Я вызвал метод myConfirm внутри щелчка, например: $('#use-design').on(click, function(e) { e.preventDefault(); myConfirm(params);}); - person Amit; 26.01.2017
comment
Пожалуйста, посмотрите на редактирование 2 в ответе, не могли бы вы попробовать, добавив метод close. - person Anand Systematix; 26.01.2017
comment
еще одна вещь, когда я прокручиваю вниз, чтобы щелкнуть диалоговое окно, он снова отправляет прокрутку наверх, затем мне нужно снова прокрутить вниз, теперь я могу нажимать кнопки диалогового окна, но эта проблема возникает только в первый раз. - person Amit; 26.01.2017