Module 修改登录页面外观,登录失败时运行javascript/jquery

Module 修改登录页面外观,登录失败时运行javascript/jquery,module,dotnetnuke,Module,Dotnetnuke,我想修改登录页面的外观。我在DesktopModules/AuthenticationServices/DNN/Login.ascx中添加了一些jquery和javascript,这样我就可以拥有一个虚拟键盘,用户可以使用它键入用户名和密码。问题是,当登录失败时,在我看来jquery和javascript脚本不会执行,因此虚拟键盘不会出现 我在这件事上做了很多调查。我正在考虑制作一个新的登录模块,但我不确定这将如何或是否使我能够解决这个问题 有什么建议吗 DNN版本:6.1.3我建议不要直接更改

我想修改登录页面的外观。我在DesktopModules/AuthenticationServices/DNN/Login.ascx中添加了一些jquery和javascript,这样我就可以拥有一个虚拟键盘,用户可以使用它键入用户名和密码。问题是,当登录失败时,在我看来jquery和javascript脚本不会执行,因此虚拟键盘不会出现

我在这件事上做了很多调查。我正在考虑制作一个新的登录模块,但我不确定这将如何或是否使我能够解决这个问题

有什么建议吗


DNN版本:6.1.3

我建议不要直接更改核心登录,因为它被视为“核心更改”,在升级时会被覆盖。每次升级之前都需要合并更改

相反,如果您需要这种访问级别,我建议您创建自己的登录模块

但是考虑到你的问题,我认为没有必要。您可以通过创建和实现一个皮肤小部件来实现同样的效果。皮肤小部件将允许您以几乎任何您能想到的方式操纵UI,因为您可以使用jQuery和注入jQuery插件

这是一个更加优雅的解决方案,它可以扩展、可测试、不受升级影响,并允许您根据需要跨多个站点和安装重用它

小部件和文档的示例可在以下两个链接中找到:


有很多链接资源

像Will说的,你绝对不应该编辑或向核心文件添加代码,因为它们会在DNN升级中被覆盖。您应该能够用Javascript解决这个问题,但您也可以看看第三方登录模块,如下所示: 具有自定义登录视图、登录视图甚至错误消息的功能。因此,您应该能够在不同的情况下根据需要注入不同的javascript


免责声明-我隶属于DNNspot

我使用了这个屏幕上的javascript键盘(OSK),非常可爱。 ()

我使用的是DNN 5.6.8,因此我不确定我的解决方案是否适用于DNN 6.x

我修改了我正在使用的“皮肤”的“page.ascx”文件,但我认为您也可以修改默认皮肤的“page.ascx”

在page.ascx的顶部,在“Register”列表的下面,我写了这样一句话:

<script type="text/javascript" src="/js/keyboard.js" charset="UTF-8"></script>
<link rel="stylesheet" type="text/css" href="/js/keyboard.css">

这两个文件(keyboard.js和keyboard.css)是屏幕上的键盘。当然,您可以将它们存储在“/js”之外的其他文件夹中

在page.ascx的底部,我放置了以下脚本:

<script type="text/javascript">
$(document).ready(function () {
    if (document.getElementById('dnn_ctr_Login_Login_DNN_txtUsername') != null) {
        $("#dnn_ctr_Login_Login_DNN_txtUsername").attr("lang", "es");
        $("#dnn_ctr_Login_Login_DNN_txtPassword").attr("lang", "es");
        VKI_attach(document.getElementById('dnn_ctr_Login_Login_DNN_txtUsername'));
        VKI_attach(document.getElementById('dnn_ctr_Login_Login_DNN_txtPassword'));
    }
});
</script>

$(文档).ready(函数(){
if(document.getElementById('dnn\u ctr\u Login\u Login\u dnn\u txtUsername')!=null){
$(“#dnn_ctr_Login_Login_dnn_txtUsername”).attr(“lang”、“es”);
$(“#dnn_ctr_Login_Login_dnn_txt password”).attr(“lang”,“es”);
VKI_attach(document.getElementById('dnn_ctr_Login_Login_Login_dnn_txtUsername');
VKI_attach(document.getElementById('dnn_ctr_Login_Login_Login_dnn_txtPassword');
}
});
这些名字:“dnn\u ctr\u Login\u Login\u dnn\u txtUsername”和“dnn\u ctr\u Login\u dnn\u txtPassword”是我在运行我的dnn站点时通过右键单击和“查看源代码”看到的,我认为没有理由认为它们在其他dnn站点中可能有所不同,但你可以检查你的

显然,您必须在DNN安装中激活jQuery:)

就这样。它工作得很好


如果用户键入错误的密码或用户名,登录可能会失败。我不再使用DNN。无论如何,谢谢你的回答。