首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASPxTextBox KeyDown事件

ASPxTextBox KeyDown事件
EN

Stack Overflow用户
提问于 2011-07-13 16:20:21
回答 2查看 9.5K关注 0票数 1

我有ASPxTextbox,我正在尝试阻止用户输入字母。所以我有我的控制代码:

代码语言:javascript
复制
<dxe:ASPxTextBox ID="phone" Text="" runat="server" MaxLength="18" Width="100px>
  <ClientSideEvents Validation="Validation" KeyDown = "SkipLetters"/>
  <ValidationSettings ErrorDisplayMode="ImageWithText" ErrorTextPosition="Bottom" ValidateOnLeave="true" />
                                                                                        </dxe:ASPxTextBox>

和SkipLetters的javascript:

代码语言:javascript
复制
        function SkipLetters(s, e) {

                if (e.htmlEvent.keyCode <= 90 && e.htmlEvent.keyCode >= 65) {
                    e.htmlEvent.returnValue = false;
                } 

        }

我知道字母是什么时候输入的,但实际上我不知道如何防止它:)我尝试在skipletters中第一次调用content = s.GetText(),但为时已晚,内容发生了变化。那么我是否应该在if语句GetText中找到字母并删除它们,或者是否有可能阻止将它们添加到文本框内容中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-13 21:16:46

我找到了一个解决方案。“使用trn的力量!”如果有人需要:

代码语言:javascript
复制
<dxe:ASPxTextBox ID="visiblePhoneNumber" Text="+48" runat="server" MaxLength="18"
     Width="100px">
     <ClientSideEvents Validation="PhoneNumberValidation" KeyPress = "CheckKey" />
     <ValidationSettings ErrorDisplayMode="ImageWithText" ErrorTextPosition="Bottom" ValidateOnLeave="true" />
     <ValidationSettings>
         <RegularExpression ValidationExpression = "[0-9\s\-\+\(\)]{9,18}" />
     </ValidationSettings>
 </dxe:ASPxTextBox>

JavaScripts:

代码语言:javascript
复制
function CheckKey(s, e) {
    var key = ASPxClientUtils.GetKeyCode(e.htmlEvent);
    var char = String.fromCharCode(key);
    if (e.htmlEvent.shiftKey) {
        if (!IsAvailableChar(char))
            ASPxClientUtils.PreventEvent(e.htmlEvent);
    } else
    if (!(IsAvailableChar(char) || IsAvailableKey(key))) ASPxClientUtils.PreventEvent(e.htmlEvent);

    return;
}

function IsAvailableChar(char) {
    var AvailableChars = "0123456789+- ()";
    return AvailableChars.indexOf(char) != -1;
}

function IsAvailableKey(key) {

    switch (key) {
    case 8: //backspace
        return true;
        break;
    case 189: //minus
        return true;
        break;
    case 46: //delete
        return true;
        break;
    case 37: //left arrow
        return true;
        break;
    case 39: //right arrow
        return true;
        break;
    case 16: //shift
        return true;
        break;
    default:
        return false;
        break;

    }

}
票数 0
EN

Stack Overflow用户

发布于 2011-07-13 16:38:59

为此,请使用ASPxSpinEdit。它是专门为允许最终用户只输入数字而设计的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6676020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档