Lightswitch HTML - 禁用 CTRL + S 功能
Lightswitch HTML - disabling the CTRL + S functionality
事实证明,当您打开 Add/Edit 屏幕(对话框或完整屏幕)时,您可以按 CTRL + S 保存屏幕。这避免了我编码的所有验证,并且如果我禁用了 Lightswitch 自己的保存按钮也没有关系。我怎样才能禁用它?
在浏览或查看屏幕上,不会发生这种情况,用户只能保存网页
禁用 Ctrl+S 的一个选项是删除 msls-save-button css class 从屏幕的保存按钮。这可以在屏幕的创建方法中完成,如下所示:
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),如我对以下 post 的回答所述:
LightSwitch Tabbed screen in Browse template
这种方法之所以有效,是因为 LightSwitch msls 库通过匹配 msls-save-button 或 msls-ok-button classes 来针对提交按钮执行 vclick。因此,如果删除了 msls-save-button class,则无法触发 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;
}
});
}
事实证明,当您打开 Add/Edit 屏幕(对话框或完整屏幕)时,您可以按 CTRL + S 保存屏幕。这避免了我编码的所有验证,并且如果我禁用了 Lightswitch 自己的保存按钮也没有关系。我怎样才能禁用它?
在浏览或查看屏幕上,不会发生这种情况,用户只能保存网页
禁用 Ctrl+S 的一个选项是删除 msls-save-button css class 从屏幕的保存按钮。这可以在屏幕的创建方法中完成,如下所示:
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),如我对以下 post 的回答所述:
LightSwitch Tabbed screen in Browse template
这种方法之所以有效,是因为 LightSwitch msls 库通过匹配 msls-save-button 或 msls-ok-button classes 来针对提交按钮执行 vclick。因此,如果删除了 msls-save-button class,则无法触发 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;
}
});
}