我正在更新一个 ASP 经典网站的上传和下载部分,该网站的主页(我没有更新)有一个“上传/下载”链接,该链接将用户带到一个带有两个登录控件的页面,一个用于上传,一个用于登录。一个可供下载,所以我试图保持相同的设计。
我试图让 Enter 键触发正确的“登录”按钮,具体取决于用户输入的登录控件。目前它始终执行页面上的第一个操作。
我找到了建议,但许多涉及按钮而不是登录控件。我尝试使用面板并将面板默认设置为检查页面时显示的 ID,但这给了我错误“‘PanlUL’的 DefaultButton 必须是 IButtonControl 类型的控件的 ID。”
我尝试将登录控件转换为模板,将登录按钮的名称更改为唯一的名称,但得到了与上面相同的错误。我怀疑是因为它们被“包装”在登录控件中。
将控件转换为模板后,我想我也许可以在代码后面的 TextChanged 事件中设置表单的默认按钮,但我无权访问代码后面的文本框。我再次想到,因为它们被“包装”在登录控件中。
将控件转换为模板后,我还尝试了一个 JavaScript 函数,在其中我能够准确获取调用该函数的文本框,并且我想我可以使用它来设置默认值:
this.Page.Form.DefaultButton = $('#<%= LoginButtonDL.ClientID %>')
但是 Visual Studio 告诉我“LoginButtonDL 没有声明。由于其保护级别,它可能无法访问。”同样,可能是因为它是登录控件的一部分。
我还看到this页面似乎正在设置一个可以选择性地调用右侧按钮的函数,但在我的菜鸟状态下,我不知道这段代码会去哪里。在某种 JavaScript 页面加载中?
这是我第一次涉足网络开发,所以我可能会错过一些基本的东西。任何帮助将不胜感激。
谢谢
要实现您想要的行为,即按 Enter 键会根据活动登录控件触发正确的“登录”按钮,您可以使用 JavaScript 动态处理 Enter 按键事件。这个想法是检测哪个输入字段是焦点,并根据该字段触发相应的按钮单击。
以下是实施此操作的分步指南:
这是一个示例实现:
<%@ Language="VBScript" %>
<html>
<head>
<title>Upload / Download Login</title>
<script type="text/javascript">
// Function to handle Enter key press
function handleEnterKey(event, buttonId) {
if (event.keyCode === 13) { // 13 is the Enter key
event.preventDefault(); // Prevent the default form submission
document.getElementById(buttonId).click(); // Trigger the button click
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<!-- Upload Login Control -->
<div id="uploadLogin">
<asp:TextBox ID="txtUsernameUpload" runat="server" ClientIDMode="Static" onkeydown="handleEnterKey(event, 'btnLoginUpload')" />
<asp:TextBox ID="txtPasswordUpload" runat="server" TextMode="Password" ClientIDMode="Static" onkeydown="handleEnterKey(event, 'btnLoginUpload')" />
<asp:Button ID="btnLoginUpload" runat="server" Text="Login" OnClick="UploadLogin_Click" ClientIDMode="Static" />
</div>
<!-- Download Login Control -->
<div id="downloadLogin">
<asp:TextBox ID="txtUsernameDownload" runat="server" ClientIDMode="Static" onkeydown="handleEnterKey(event, 'btnLoginDownload')" />
<asp:TextBox ID="txtPasswordDownload" runat="server" TextMode="Password" ClientIDMode="Static" onkeydown="handleEnterKey(event, 'btnLoginDownload')" />
<asp:Button ID="btnLoginDownload" runat="server" Text="Login" OnClick="DownloadLogin_Click" ClientIDMode="Static" />
</div>
</form>
</body>
</html>
说明:
#重要注意事项:
通过此设置,在关注特定登录控件中的任何字段时按 Enter 键应该正确触发关联的登录按钮。