2010-12-29 5 views
1

ユーザー入力をテキスト入力に自動的にクリーンアップする必要があります。ハイフン。テキスト入力に数値入力だけを許可し、オプションの最初の文字としてハイフンを使用する

したがって、たとえば、ユーザーが138a29あれば、自動的に私は数字のみを許可するようにキーコードをチェックするOnKeyPressイベントを使用していたが、それはに少し困難であることが証明されています13829.

に更新されますいくつかのブラウザでは、矢印キーやバックスペースキーなどを打ち破らずに数字だけを使用することができます。そして、オプションの最初の文字としてハイフン( - )を使用できるようにする新しい要件がありますが、ハイフンはその文字列の他の場所では有効ではありません。

特定のプロジェクトで使用するプロトタイプライブラリがありますが、jQueryはありません。

+0

は、彼らが入力している間、これはきれいにすることです試してみてくださいまたは提出する前に値をきれいにしますか? – Sparky

+0

入力中にきれいにします。 – NatalieMac

+0

これはあなたが矢印に問題があったので、キーボード操作のための素晴らしいリファレンスです。 http://unixpapa.com/js/key.html –

答えて

1

これを行う最も簡単な方法は、keyCodeを避け、keyupにテキストボックスの値を使用することです。このような何か...

Event.observe('myInput', 'keyup', function(){ 
    var value = this.value, first; 
    if(value.length == 0) 
     return; 

    first = value.charAt(0); 
    value = value.replace(/[^0-9]/g,''); 

    if(first == '-') 
     value = first + value; 

    this.value = value; 
    return true; 
}); 
+0

これは治療法です!私は特定のケースに合わせていくつかの変更を加えるだけでしたが、これは素晴らしい解決策です。ありがとう! – NatalieMac

0

は、(無効な文字を許可しない、すなわち)この

<script type="text/javascript"> 
function whatKey(e) { 
    var thetext = document.getElementById('tt'); // Current value 
    var theKey = String.fromCharCode(e.keyCode); // key entered 
    var combval = thetext.value + theKey;   // Result would be this 

    return (!isNaN(combval) || combval=='-');  // if result OK, accept key 

} 
</script> 
関連する問題