2011-07-13 111 views
1

我有ASPxTextbox,我試圖阻止用戶輸入字母。所以,我有我的控制代碼:ASPxTextBox KeyDown事件

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

和JavaScript SkipLetters:

 function SkipLetters(s, e) { 

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

     } 

我知道什麼時候該字母鍵入,但實際上我不知道如何阻止它:)我已經嘗試將var content = s.GetText()作爲第一個調用滑動條的內容,但已經太晚了,內容被改變了。那麼我應該在if語句GetText中找到並刪除它們,或者是否有可能阻止將它們添加到文本框內容?

+0

據我所知,這是唯一的一次選擇,你有。如果您想保存一面,請添加具有相同功能的事件'keyUp'和'change'。背景是,你可以用鼠標捕捉粘貼動作(鼠標右鍵然後粘貼動作)。 – reporter

回答

0

我找到了解決方案。 「使用力量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 = "-()"; 
    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; 

    } 

} 
1

爲此目的使用ASPxSpinEdit。它專門設計用於允許最終用戶輸入數字。

+0

thx爲您提供幫助 - 但ASPxSpinEdit允許用戶輸入+, - ,(,)等符號嗎?因爲人們使用如此多的格式輸入電話號碼 - 例如(71)333-444-111或321 123 321。我真的很關心他們不需要考慮格式數字,我的應用程序會在稍後解析它們。 – TrN