2011-07-28 13 views
0

私はhtmlテキストボックスを持っています。onkeypressイベントは関数を呼び出し、関数は数字(0-9)だけを入力できます。これは、ユーザーが直接入力したときに問題なく動作します。JavaScriptのonkeypressの問題でテキストボックスに数字のみを入力してください

ユーザーがテキストボックスに文字や文字列をコピーして貼り付けると、問題が発生します。貼り付けられた値がNumberかCharかを検証するJavaScript関数をいつ呼び出さなければならないのか分かりません。

+0

@opのように、サーバーで検証を行う必要があります。現在の問題については、onchangeイベントを使用してみてください。 – amal

答えて

2

は、あなたがのonchangeイベントを使用してみてください、その後、正規表現でチェックすることができるかもしれませ...

+0

一部のブラウザ(少なくともChrome)では、 'onchange'イベントを発生させるテキストボックスをぼかすまではありません。 – pimvdb

1

あなたがここに独自のスクリプトを書いていない検討しましたか?

私はjQuery MaskedInputを使用しません、それはあなたが<input type=number" \>または<input type="range" />として、新しいHTML5フォームタグのいずれかを使用することができ、この

2

のために完璧に動作します。

0
$("#textbox").change(function(){ 
    //validate the text here 
}); 
+0

これはjQueryを前提としています。 –

0

これは、数値以外のすべての入力に対してfalseを返すためです。

Ctrl + Cのようなものを特定する方法や、ブラックリストの方法に切り替えることができます。実際には、数値以外の印刷可能な文字だけを許可したくないので、おそらくコードポイントの範囲でこれを行うことができます。

0

通常のJavascriptを使用している場合は、object.onpaste = handler; などを使用してください。おそらく

<html>... 
    <input id="something" type="text" /> 
... 
    <script> 
    var el = document.getElementById('something'); 
    el.onpaste = function() { 
     // do you stuff here 
    } ... 

onchange

そして、あなたのためにそれを行うにはjQueryのようなライブラリを使用するといいですを使用することをお勧め。

しかし、あなたはjavascriptの内臓を学びたいと思えば...あなた自身でそれをしなさい!時には、学習の際に車輪を再構築する方が良い場合もあります。

+0

'onpaste'はIEのみです。 – KooiInc

+0

@Kooilnc:いいえ、そうではありません。これは、すべての主要なブラウザの現在のバージョンで実装されています。 –

+0

... Operaを除く –

0

setIntervalを使用して、フォームフィールド用に独自の(擬似)変更リスナーを作成することもできます。例については、this jsfiddleを参照してください。

関連する問題