【问题标题】:onkeypress is not working with textbox in asp.net webformonkeypress 不适用于 asp.net webform 中的文本框
【发布时间】:2019-07-30 08:11:26
【问题描述】:

onkeypress 不能在 asp.net 网络表单中使用 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 但不阻止进入。 如果我用 onkeydown 替换 onkeypress 就可以了

【问题讨论】:

  • onkeypress 设置event.charCode 而不是event.keyCode。但是它已被弃用,您应该改用onkeydown。我不确定您到底在问什么,如果您改用onkeydown,您的问题听起来一切正常,那么到底是什么问题?
  • 编辑了问题。实际上,我正在尝试防止特殊字符和字母。只允许数字和小数。并且使用 onkeydown 效果不如 on keypress
  • using onkeydown it is not working as well as with on keypress 究竟如何?你能详细说明吗?同样:onkeypress 现在已被弃用。

标签: javascript c# asp.net


【解决方案1】:

请看这篇文章:

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

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

OnKeyDown 允许您在文本框中输入字符之前触发事件,以便您可以在确定是否应允许之前检查所按下的字符是什么。

OnKeyUp 将允许您基本上按住一个键,并且在释放该键之前不会触发事件。

OnKeyPress 将为每个按下的字符键(包括被按住的键)触发一个事件。

【讨论】:

  • 是的,但是如何防止通过 onkeypress 事件进入
  • 正如我所说,KeyPressed 事件仅与字符 ([a-z][0-9]) 一起触发。在这里,您尝试捕捉“。”所以你只能用onkeydown来捕捉它。请看这篇文章:stackoverflow.com/questions/1367700/… 如果它可以帮助您找出问题所在,请不要忘记将此答案标记为解决方案。
猜你喜欢
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2020-02-08
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
相关资源
最近更新 更多