第一次打开动态jquery对话框时,页面会自动转到顶部

时间:2017-01-26 11:03:46

标签: ms-word jquery-ui-dialog office-js word-addins javascript-api-for-office

我正在使用 JavaScript API 开发一个任务窗格word加载项,我使用下面的代码使用函数动态创建一个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上测试它,它工作正常。

请告知我如何为单词加载项修复它。

1 个答案:

答案 0 :(得分:0)

您可以在调用函数时尝试以下代码: -

onclick="myConfirm();return false;"

只需添加“return false;”在您的函数名称之后如上所示。

编辑1: -

或者你也可以从你的函数中返回false。

编辑2: -

$form.show().dialog({
                close: function (event) { event.preventDefault(); }
                resizable: false,
                etc....
            });