ASPxTextBox KeyDown事件

时间:2011-07-13 08:20:21

标签: javascript-events devexpress

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

<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:

        function SkipLetters(s, e) {

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

        }

我知道这些字母什么时候输入,但实际上我不知道如何防止它:)我已经尝试将var content = s.GetText()作为跳过者的第一次调用,但为时已晚,内容已更改。那么我应该在if语句中使用GetText,查找字母并将其删除,还是有可能阻止将它们添加到文本框内容中?

2 个答案:

答案 0 :(得分:1)

为此目的使用ASPxSpinEdit。它专门设计用于允许最终用户仅输入数字。

答案 1 :(得分:0)

我找到了解决方案。 “使用force trn!”如果有人需要:

<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>

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;

    }

}