2012-08-21 21 views
5

私はいくつかのフィールドを持つhtmlを持っています。フィールドの1つは数値入力のみを許可します。しかし、今私は、ユーザーがそのフィールドに貼り付けを実行するときに、削除または削除された番号を除くすべての文字を欲しがります。例示的なユーザペースト用貼り付けイベントJavascriptの入力フィールドに数字以外の文字をすべて削除します

: - 入力フィールドに> 1234567

1.234.567 - > 1234567

1,234,567 -

$ 1 234 567> 1234567

など

+0

です「 - 」(マイナス記号として使用される)の数値は? 一般に、ユーザー入力から文字を静かに削除することはお勧めできません。 100個のアイテムを注文したのに何とか1ooと入力した場合、私の注文を1個のアイテムに静かに変更するのではなく、警告を受けて修正を促したいと思います。 –

+0

コメントありがとうございます、私は将来を考えています。この時点で私はこのパターンだけを解決しなければなりません。 – halofourteen

答えて

11

正規表現を使用してください。

<input id="inputBox" name="inputBox" /> 
<script type="text/javascript"> 
var inputBox = document.getElementById('inputBox'); 
inputBox.onchange = function(){ 
    inputBox.value = inputBox.value.replace(/[^0-9]/g, ''); 
} 
</script>​ 

また、タイマーを使用してそのフィールドを常に確認することもできます。

<input id="inputBox" name="inputBox" /> 
<input id="inputBox2" name="inputBox2" /> 
<script type="text/javascript"> 
var timer = new Array(); 
function checkFields(el){ 
    var inputBox = document.getElementById(el); 
    inputBox.value = inputBox.value.replace(/[^0-9]/g, ''); 
    clearTimeout(timer[el]); 
    timer[el] = setTimeout((function(){ checkFields(el); }), 50); 
}; 
function timerFields(el){ 
    timer[el] = setTimeout((function(){ checkFields(el); }), 50); 
}; 
timerFields('inputBox'); 
timerFields('inputBox2'); 
</script>​ 
0
var f = function (s) { 
    var r = ''; 

    for (var i in s) { 
    if ('0' <= s[i] && s[i] <= '9') { 
     r += s[i]; 
    } 
    } 

    return r; 
} 

alert(f('123.234-234?345')); // 23234234345 

しかし、別の答え:)から正規表現を使用し

2

はしてみてください。この

var regexp=/\D/g; 
alert(("$1 234 567").replace(regexp,"")); 
関連する問題