我试图弄清楚 onKeyPress 和 onKeyUp 之间的区别。我知道 onKeyPress 发生在提交操作之前,而 onKeyUp 发生在之后。
我的问题是按下回车按钮时会发生什么?
如果我使用 onKeyPress 我的代码工作正常并且提交按钮被禁用。如果我使用 onKeyUp 它将提交它,但由于某种原因,提交按钮仍将处于活动状态。
这是代码:
<script type="text/javascript">
function InformUser()
{
window.document.getElementById("loadingMessageDIV").style.display = "block";
<%=Page.GetPostBackEventReference(btnSubmit as Control)%>
document.getElementById("btnSubmit").disabled = true;
}
function validateTxt() {
var input = document.getElementById("<%=txtUserName.ClientID %>").value;
if(input.length > 0)
{
document.getElementById("btnSubmit").disabled = false;
}
else
{
document.getElementById("btnSubmit").disabled = true;
}
}
</script>
这是调用 validateTxt() 的文本框
<asp:TextBox ID="txtUserName" runat="server" Font-Size="11pt"
onkeyup="validateTxt()"></asp:TextBox>
这是提交按钮
<asp:Button ID="btnSubmit" runat="server" OnClientClick="InformUser();" OnClick="btnSubmit_Click"
Text="Login" Font-Bold="True"/>
<script type="text/javascript">
document.getElementById("btnSubmit").disabled = true;
</script>
回顾一下:如果我将 onkeypress 更改为 onkeyup,我将获得捕获退格键的能力,但是当我按下 enter 时,提交按钮仍然处于活动状态。
如果我将 onkeyup 更改为 onkeypress,那么我可以按 Enter 并停用提交按钮。缺点是我无法捕捉退格键。
谢谢!
解决方案:
多亏了apsillers才弄清楚。
我不得不使用 onkeyup 来检查回车键
function validateTxt(event) {
var input = document.getElementById("<%=txtUserName.ClientID %>").value;
var key = event.keyCode || event.which;
if(input.length > 0 && key != 13)
{
document.getElementById("btnSubmit").disabled = false;
}
else
{
document.getElementById("btnSubmit").disabled = true;
}
}