2011-07-13 12 views
1

私はASPxTextboxを持っており、ユーザーが文字を入力しないようにしようとしています。 SkipLettersため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:だから、私は制御コードを持って

 function SkipLetters(s, e) { 

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

     } 

私は手紙がで入力している際に知っているが、実際に私はそれを防ぐ方法がわからない:)私はしましたvar content = s.GetText()をskiplettersの最初の呼び出しとして試みましたが、それは遅すぎます。内容は変更されます。 if文GetTextで、文字を見つけてそれらを消去するか、テキストボックスの内容にそれらを追加できないようにする必要がありますか?

+0

は、私の知る限りでは、それはオプション一度あなたが持っているかだけです。保存側にしたい場合は、同じ機能を持つイベント 'keyUp'と 'change'を追加します。背景は、マウスでペーストアクションをキャッチすることができます(マウスの右ボタンとペーストアクション)。 – reporter

答えて

0

解決策が見つかりました。 "力を使う!"誰かが必要とする場合:

<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

関連する問題