Lightswitch HTML - 禁用CTRL + S功能

时间:2016-04-21 16:06:37

标签: visual-studio-lightswitch lightswitch-2013

当你打开一个添加/编辑屏幕(对话框或完整)时,你可以点击CTRL + S来保存屏幕。这避免了我编码的所有验证,如果我已禁用Lightswitch自己的保存按钮也没关系。如何禁用此功能?

在浏览或查看屏幕上,这不会发生,用户只能在那里保存网页

1 个答案:

答案 0 :(得分:1)

禁用 Ctrl + S 的一个选项是从屏幕的保存按钮中删除msls-save-button css类。这可以在您的屏幕创建方法中完成,如下所示:

myapp.AddEditScreen.created = function (screen) {
    $(window).one("pagechange", function (e, data) {
        var $page = $("#" + screen.details._pageId);
        var $button = $page.find(".msls-save-button");
        $button.removeClass("msls-save-button");
    });
};

需要jQuery移动页面切换处理程序来确保您的屏幕呈现(并且_pageId已定义),如我对以下帖子的回答中所述:

LightSwitch Tabbed screen in Browse template

这种方法可以解决问题,因为LightSwitch msls库通过匹配msls-save-button或msls-ok-button类来执行针对提交按钮的vclick。因此,如果删除msls-save-button类,则无法触发vclick,实际上忽略 Ctrl + S

下面列出了处理快捷键的msls库函数(函数末尾介绍了msls-save-button vclick处理):

function _handleScreenKeyboardShortCuts($page, navigationUnit) {
    var buttonsNeeded = navigationUnit._buttonsNeeded,
        showCancel;
    if (!buttonsNeeded) {
        return;
    }
    showCancel = buttonsNeeded.showSaveDiscard ||
        buttonsNeeded.showOkCancel;
    if (!(showCancel || buttonsNeeded.showOk)) {
        return;
    }
    $page.keydown(function (e) {
        if (msls_shell._currentNavigationOperation ||
            $.mobile.popup.active) {
            return;
        }
        if (showCancel && _isCancelShortCutKey(e)) {
            $(".msls-discard-button,.msls-cancel-button",
                $.mobile.activePage).trigger("vclick");
            return false;
        } else if (_isCommitShortCutKey(e)) {
            $(".msls-save-button,.msls-ok-button",
                $.mobile.activePage).trigger("vclick");
            return false;
        }
    });
}