asp.net 텍스트 상자 onkeyup 이벤트 문제가 있습니다. asp.net 텍스트 상자에 10 진수 만 허용하는 요구 사항이 있습니다. 그것을 달성하기 위해 onkeyup 이벤트에서 자바 스크립트 함수를 호출합니다. javascript 함수는 입력을 올바르게 확인하지만 사용자가 알파벳이나 문자를 입력하지 못하게합니다. onkeychange 및 onkeypress 이벤트는이 텍스트 상자 값에 의존하는 마진 백분율의 잘못된 계산을 유발하는 백 스페이스 키를 감지하지 못하는 것을 제외하고는 모두 잘 작동합니다.asp.net 텍스트 onkeyup 이벤트
<asp:TextBox ID="txtListPrice" runat="server" CssClass="textbox" MaxLength="50"
onkeyup= "return IsNumberKey(event);" > </asp:TextBox>
function IsNumberKey(evt) {
//obj.value = obj.value.replace(/[^0-9]/g, "");
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode <= 31 || charCode == 46 || (charCode >= 48 && charCode <= 57)) {
return CalculateMargin();
}
else {
return false;
}
}
function CalculateMargin()
{
var ListPrice = parseFloat(document.getElementById('<%=txtListPrice.ClientID%>').value);
var Cost = parseFloat(document.getElementById('<%=txtCost.ClientID%>').value);
var result = false;
if (ListPrice != NaN && Cost != NaN)
{
if ((ListPrice != "" && Cost != ""))
{
var result = Math.round(((ListPrice - Cost)/(Cost)) * 100);
document.getElementById('<%=txtMargin.ClientID%>').readOnly = false;
document.getElementById('<%=txtMargin.ClientID%>').value = result;
document.getElementById('<%=txtMargin.ClientID%>').readOnly = true;
result = true;
}
else
result = false;
}
return result;
}
감사