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 キーを押して送信ボタンを無効にすることができるようになります。欠点は、バックスペースをキャプチャできないことです。
ありがとう!
解決:
アプシラーのおかげでそれを理解しました。
Enterキーに対してチェックを入れて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;
}
}