onkeypress在asp.net Web窗体中不能与textbox一起使用
我要防止特殊字符和字母

以下是aspx

<wijmo:C1InputText ID="SAC" runat="server" Style="width: 150px; display: inline-block;" onkeydown="return onlyNumbers(this,event);">
</wijmo:C1InputText>

function onlyNumbers(txt, event) {
    var charCode = (event.which) ? event.which : event.keyCode
    if (charCode == 46) {
        if (txt.value.indexOf(".") < 0)
            return true;
        else
            return false;
    }
       var regex = new RegExp("^[a-zA-Z0-9]+$");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode!=190)
        return false;
    return true;
}


它返回false,但不会阻止输入。
如果我将onkeypress替换为onkeydown则可以正常工作

最佳答案

请看一下这篇文章:

https://forums.asp.net/t/1888076.aspx?onKeyPress+vs+OnKeyDown+vs+OnKeyUp

这是您想要的答案的一部分:


  OnKeyDown允许您在将字符输入文本框之前触发事件,以便可以在确定是否允许该字符之前检查所按下的字符是什么。
  
  OnKeyUp允许您从本质上按住某个键,并且在释放该键之前不会触发事件。
  
  OnKeyPress将为每个被按下的字符键(包括被按下的字符键)触发一个事件。

10-07 13:02