• ベストアンサー

テキストエリアに入力可能な文字を半角数字に制限する方法を教えて下さい。

テキストフィールドに入力可能な文字を javascriptにより、 半角数字・左右のカーソルキー・バックスペースキー・デリートキー のみに限定しようと試みています。 半角数字は、メインキー最上段にある数字キーだけではなく、テンキーからも入力されることを前提としています。 【javascriptのソース】…ブラウザIEのみに対応の場合 function suujinomi(evt) { evt = window.event; txt = String.fromCharCode(evt.keyCode);   ...(1) if("0123456789abcdefghi\b\r\t.'`%\60".indexOf(txt,0) < 0) {  return false; ...(2) } else {  return true; } } 【テキストフィールドhtmlのソース】 <input type=text value="" onkeydown="return suujinomi(event)">  以下のようにな問題(1)、(2)を解決できず困っています。 (1) メインキーボードの最上段にある数字キーのシフトケースである  半角文字!"#$%&'()もテキストフィールドに入力でき、 (2) ブラウザIE以外のブラウザでは、次のようにステートメント(1)、(2)を書き換えてみたのですが、入力可能な文字が全く制限されません。  javascriptのステートメント(1)   → txt = String.fromCharCode(evt.which);  javascriptのステートメント(2)   → evt.cancelBubble = true;     evt.returnValue = false;     return false;  どのようにすれば、問題(1)、(2)を解決できるかどうか教えて下さい。  よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.4

・ yambejp 様の方針で、 ・ Firefoxのほか、IEに対応しています。 ・ [Home]キー、[End]キー他も対処しました。 ------------------------------------------------------------ <html> <head> <script type="text/javascript"> <!-- function suujinomi(obj) { if (window.event) { var c = window.event.keyCode; if ( 48<=c&&c<=57 || 96<=c&&c<=105 || c==37 || c==39 || c==8 || c==45 || c==46 || c==36 || c==35 ) return; } var v=obj.value; v=v.replace(/[^0-9]/g,''); //v=v.replace(/[^0-9!"#$%&'\(\)]/g,''); obj.value=v; } //--> </script> </head> <body> <hr /> <input type=text value="" onkeyup="suujinomi(this)"> </body> </html> ------------------------------------------------------------

tfj3116
質問者

お礼

さらに具体的な処理を教えて頂きました。 おかげさまで、IE,Opera,firefox,safariの何れのブラウザでも 安定に作動するようになりました。 ありがとうございます。 今後とも、どうかよろしくお願い致します。

その他の回答 (3)

noname#84373
noname#84373
回答No.3

<HTML> <script type="text/javascript"> function keychk(k){ if(47<k&&k<58 || 45==k || 46==k || 8==k || 95<k&&k<106 ||37==k ||39==k) return; return false; } </script> <input type="text" size="30" id="a" onKeydown="return keychk(event.keyCode)"> </HTML>

tfj3116
質問者

お礼

ありがとうございます。 考え方を再考する上で、大変参考となりました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

単に入力されたデータをチェックするのではだめ? <script> function suujinomi(obj) { var v=obj.value; v=v.replace(/[^0-9a-zA-Z!\"#$%&\'\(\)]/,''); obj.value=v; } </script> <input type=text value="" onkeyup="suujinomi(this)">

tfj3116
質問者

お礼

ありがとうございます。 ブラウザの個性の違いに直接対処しようと 考えすぎていました。 今回は、教えて頂いた通り、入力されたデータをチェックする ことで対処するほうが適切でした。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1
tfj3116
質問者

お礼

ありがとうございます。 ご指摘の通りでした。 ご紹介頂いたサイトも大変参考となりました。

関連するQ&A

  • テキストフィールドに半角数値以外入力させない方法…。

    お世話になります! JavaScriptで、 function checkNum() {  c = String.fromCharCode(event.keyCode);  if ("0123456789".indexOf(c,0) < 0) alert("数値以外入力できません"); } と記述し、実行してみたのですが確かに数値以外は入力できないのですが BackSpaceやEnterキー、Tabキーを押した時にもアラートが発生します…。 本を見て、 function checkNum() {  c = String.fromCharCode(event.keyCode);  if ("0123456789".indexOf(c,0) < 0) return false; return true; } と記述すると、フォーム自体に半角数字しか入力できなくなると書いてあったのですが 実行しても普通に全角入力できました…。(泣) 何か方法ありますか?ご存知の方、宜しくご教授願います★ ちなみに、勿論<input>部分にonKeyDown="***()"の記述はしてますし JavaScriptが有効な状態での実行です。

  • IME2002で半角数字入力

    IME2002で『テンキー』から入力された数字は標準で半角数字として表示され 文字キー上段の数字キーから入力された文字は全角数字になる設定になっていると思います。 この設定をすべて半角数字になるように変更しましたが、 使い勝手の都合で戻そうとしたのですが、設定を戻してもすべて半角数字で入力されてしまいます。 通常状態に戻したいのですが、ご存知の方いらっしゃったら教えてください。お願い致します。

  • テキストボックスに「00000」を入力すると「0」になってしまう

    あるテキストボックスには5桁の半角数字を入力させるようにしたいと思っています。 このテキストボックスには以下の入力チェックをかけていますが、「00000」を入力すると「0」と判断されてしまい。一つ目のチェックに引っかかってしまいます。 これを文字列として判断する方法はありますか? または、以下のチェックに引っかからない方法はありますか? よろしくお願いいたします。 (codeにはvalueが入っています。) if(code == 0){ alert("入力してください。"); return false; } if(isFinite(code) == false){ alert("半角数字を入力してください。"); return false; } if(code.length != 5){ alert("5桁入力してください。"); return false; }

  • HTMLのtextで半角数字のみ入力OKにする方法

    お世話になります。 Windows、VisualStudio2015のASP.NET(VisualBasic)、.NET Framework4.6、 ローカルIIS、ブラウザはGoogleChrome、IE、で開発しています。 1つのページに1つのtext(ASP.NETではTextBox、名称はtxtTest)を置き、 半角数字のみ入力できるように、function(名称はnumOnly())を設定します。 HTMLのソースは以下の通りです。 functionは、<head><script></script></head> に書いてあります。 -------------------- ・・・ <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script> <!-- // 半角数値のみを入力可能にする function numOnly() { m = String.fromCharCode(event.keyCode); if("0123456789\b\r".indexOf(m, 0) < 0) return false; return true; } //--> </script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="txtTest" runat="server"></asp:TextBox>・・・※A </div> </form> </body> </html> -------------------- また、プログラムにおいては、 ページをロードする際に、 次のコードを実行します。 ASP.NETのTextBoxには、onkeydown属性がないからです。 ページ実行時に属性を追加します。 -------------------- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load txtTest.Attributes.Add("onkeydown", "return numOnly()") End Sub -------------------- また、ブラウザで実行しますと、上記の※Aの部分のソースは、 以下のようになります。 -------------------- <input name="txtTest" type="text" id="txtTest" onkeydown="return numOnly()" /> -------------------- これにより、パソコンのキーボードの上の方に横に並んでいる数字キーで、 半角数字のみ入力はできるようになったのですが、 テンキーでの半角数字入力ができません。 これをできるようにしたいのですが、 何か適切な方法がございましたら、 ご教示いただけたら幸いです。 どうそよろしくお願いします。 (functionの参照元) http://javascript.eweb-design.com/1205_no.html <SCRIPT>という(大文字)はASP.NETでは適切でないようで、小文字に。 「language="JAVASCRIPT"」の個所もエラーになるため外してあります。

  • 常に半角で数字を入力する方法

    現在IMEにATOKを使っています。テンキーで全角入力時でも常に半角数字を入力する設定は項目が用意されてるので分かるのですが、キーボード上部の数字キーで全角入力時でも常に半角数字を入力する様に設定するにはどうすればいいのでしょうか?

  • XP 半角、全角文字入力。

    XPを使用しています。今朝、フッと思ったのですが、メールを編集中や、検索内容を入力する時に、数字が必要な場合、今までは、半角 全角文字入力のキーを押し、切り替えしていました。以前、誰かに聞いたのか?読んだのかは忘れましたが、キーボードのキーを好きなように変換出来るという事が、載っていたか、聞いたか?なのですが、キーボードのカタカナ、ひらがなキーは一番下段にありますが、半角 全角キーは、向かって左側の上段近くにあります。このキーの機能を下段のキー列の何かに変えられないものでしょうか?

  • テキストエリアに「\1,000,000」と入力すると文字化けするので良い方法はありませんか?

    入力テキストエリアに「\1,000,000」と入力すると文字化けするので、 何か良い解決策はありませんか?\1,000,000はそのまま手入力で計算した 値ではありません。 また、テキストエリアですので、 \1,000,000 \1,000,000 で2行になる事もあります。その場合、改行コードなども関係してくると 思います。混乱してきたので、わかる方ご伝授お願いいたします。 半角\を入れると、全角¥に変換するなどです。 もしよければもうひとつ、半角数字、半角英字を全て、全角にする方法はありますか? 非常に困っています。良い解決策があれば教えて下さい。

    • ベストアンサー
    • Perl
  • javascriptでの入力制限

    テキストボックスに値を入力する時、半角数字しか受け付けない様にjavascriptで制限したいです。 良い方法があれば是非教えて下さい。 よろしくお願いします。

  • テンキーではない方の数字キーで直接半角で入力したい

    テンキーではない方の数字キー(数字の横にひらがなも印字されているキー)でテンキーのようにそのキーを押すだけで半角で入力できるようにしたいのですが、そのような方法はありますでしょうか? 例 1234とテンキーではない方の数字キーで半角で入力するのに 「1234」→「スペースorF8」→「Enter」 ではなく 「1234」→「Enter」 で1234と半角で入力したいのです。(できればハイフンも同じように入力できればなと思っています) 数字や記号は圧倒的に半角で入力する場合が多いので。 テンキーの入力を全角にする方法は見つかったのですが、この情報はなかなか見つかりませんでした。。 入力ソフトはATOK2008を使用してます。 よろしくお願いします。

  • 半角入力だけかな入力になってしまいます。

    全角入力だと普通にローマ字入力ができるのですが、 半角入力にするとかな入力になってしまって困っています。 半角入力にすると数字の1→ヌ 数字の2→フ というようになってしまいます。 気づかないうちにどこかキーを押してしまったのだと思うのですが、 直し方が分かる方いましたら回答頂けると助かります、よろしくお願いいたします。

専門家に質問してみよう