【问题标题】:Page automatically go to the top when opening a dynamic jquery dialog box first time第一次打开动态jquery对话框时页面自动跳到顶部
【发布时间】:2017-01-26 11:03:45
【问题描述】:

我正在使用 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 上进行了测试,它运行良好。

请告诉我如何修复它的字插件。

【问题讨论】:

  • 这个函数怎么调用?是不是来自&lt;a href="#" /&gt;
  • @RoryMcCrossan 没有内部锚点击方法,我也使用 e.preventDefault();内锚点击方法。

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


【解决方案1】:

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

onclick="myConfirm();return false;"

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

编辑 1:-

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

编辑 2:-

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

【讨论】:

  • 我在 click 方法中调用了 myConfirm,例如: $('#use-design').on("click", function(e) { e.preventDefault(); myConfirm(params);} );
  • 请查看答案中的edit 2,您能否通过添加关闭方法尝试。
  • 还有一件事,当我向下滚动以单击对话框时,它再次将滚动发送回顶部,然后我需要再次向下滚动,现在我可以单击对话框按钮,但这问题仅在第一次提出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多