• ベストアンサー

cgi フォームでの入力文字形式指定

perl cgiでフォームを作りました。 iphoneから、半角数字で小数を入力してほしいところにカーソルをもっていくと ソフトキーボードが英数字に切り替わります。 カーソルをもっていくと半角数字とピリオドが選びやすいようなキーボードが表示されるように、htmlをかけないでしょうか?

  • nagaon
  • お礼率68% (293/427)
  • HTML
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.3

改めて自分も色々と試して挙動を確認しましたが…確かにおっしゃる通り、inputタグ内に step属性を指定すると、そっちの方の設定が優先されてしまって type="number" を設定して置いても望んだ通りの挙動にならないですね。 従って現状では妥協して… <input type="number" step="0.01" pattern="^[0-9]+(\.[0-9]+)?$"> ~上記の様な記述例で暫定的に対応するしかないと思います。 P.S. 自分の環境下では正確にスマホの挙動をエミュレーション出来ないため、暫定的にsafariと同じwebkit系のchromeで確認するしか手立てが無いのですが。それだと質問の「数字キーボード」の挙動を実験できないので、これ以上の回答というかアドバイスは難しいですね。 それでもどうしてもより完璧な理想のGUIに近付けたいのであれば、やはり最初に申しました通りJavascriptを使って「自作の数字キーボード」を表示させるしか無いと思います。ただしそういったGUIの標準表示の仕方をwebサイト側で強引に上書きする事は、ある意味ではブラウザ側が本来想定している挙動を上書きしてしまう事になるため、もしかしたらセキュリティ的に危険なwebサイトと判断されるかも? とにかく現状では如何ともし難いですね…

その他の回答 (2)

  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.2

ああ、すいません。少し自分が質問内容を勘違いというか早合点してしまってたようで…。要は入力された内容を事前にチェックするとかでは無くて、物理的に「半角英数字とピリオドのみ」しか入力出来ない様にポップアップされる入力用の小ウィンドウに何らかの制限をかけたいって事だったんですね? 結論から言うとHTMLを弄るだけでは無理。Javascriptを使ってページ上の特定部位がタッチされた時に、それを動的に検出して自作した「半角英数字とピリオドのみのキーボード入力用のダイアログ」を別途出力させる様なプログラムを自分で作るしか方法は無いですね。 ある程度、中級者以上のHTMLとCSSとJavascriptの知識があり、尚且過去に似た様な何らかのwebサービス等の開発をやった経験が無いと。その様な仕様を実装させるのはかなり難しいと思います。自分もぼんやりとはイメージが浮かびますが、いざ作るとなるとかなり本格的に下調べしてコードを書いて実験等を繰り返さないとならないと思うので… P.S. 現状、HTML5+CSS3で作れるのは前述の inputタグ内に type と pattern を指定し組み合わせる事で「数字のみ」か「それ以外」しか選べません(stepは数字のみの時のオプション)。 patternでの指定はあくまでも「入力された内容をチェックして、指定された正規表現に合致しない場合は注意喚起メッセージを出す」というモノなので。お望みの様な最初から「半角数字とピリオドのみが選べる入力ウィンドウ」みたいな事は出来ません。

nagaon
質問者

お礼

丁寧なご回答ありがとうございました。 <input type="number" name="height" step="0.1" と書くと確かに 数字キーボードが表示されます。 私としては、それだけでありがたいのです。 しかし、ここに188.11とか入力しようとすると、警告が表示されます。 じゃ、 <input type="number" name="height" step="0.01" とかかくと、ブラウザによっては、数字記入欄の横にコントロールが 出現して、数字のアップダウンで入力できるようになります。 すると数字を直接入力できるということが 分からない人が出てきます。 <input type="tel" name="height" だと整数しか入力できません。 私としては数字キーボードになってくれるだけでよいのですが。。。 桁数のチェックとかは不要なんですが。

  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.1

該当するhtml部分は恐らく inputタグを用いられてるかと思いますので、 <input type="text" pattern="[0-9]*"> <input type="number" pattern="\d*"> ~上記の様に pattern="*" を指定する事である程度、キーボード入力の範囲を絞れます。他の正規表現もある程度までは認識してくれます。 古いバージョンのiPhoneだと効き目無いけど、ここ2年以内のバージョンなら大丈夫だと思います。

nagaon
質問者

補足

貴重な情報ありがとうございます。 <input type="number" にするとたしかにキーボードが数字を含むものになります。 しかし、小数の入力を受けてるようにするには <input type="number" step="0.1" としないといけないと書いてあるサイトがありました。stepをつけると0.1刻みで増減させるコントロールが生成されます。 私はiPhone6 iOS 11.4.1を使っていますが、たしかに キーボードが数字を含むものに変更されました。0.1ずつ増減させるコントロールは生成されませんでした。 しかしstepをつけて変なコントロールが生成されるのもいやだし、小数が受け付けられなくなるのも困ります。 <input type="number" だけにしてpattern やstepを使わなかった場合 iOS 11.4.1以後のiOSおよびアンドロイドで、小数を数を受け付けてくれるでしょうか? 作るにはどうすればよいでしょうか?

関連するQ&A

  • フォーム入力のチェック

    フォームの入力をCGI(Perl)でチェックするとき、 全角の漢字、カタカナ、ひらがなでの入力以外は禁止にしたいです。 どなたかいい方法をご存知でしょうか? とりあえず、現在は、 jcode.plで全角英数字⇒半角英数字に変換 フォームに入力された文字列を一文字(半角2文字)ずつ抽出して、 $a=~ s/([^\w ])/'%' . unpack("H2", $1)/eg; でエンコードしたものが%を含んでいるかどうかで判別してます。 でもこれだと全角英数字と半角英数字しかシャットアウトできません。 記号文字なども入力出来ないようにしたいです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 入力フォームで入力出来る文字を半角英数に制限する

    いつもお世話になっています 問合せフォームを作成しているのですが、自分で携帯でアクセスしてみた時に、 電話番号など、数字しか入力する必要の無いフォームにフォーカスするとき、 いちいち半角英数を選び直さなければならないのが不便に感じます。 入力フォームにフォーカスすると、自動的に半角英数に入力文字が 切り替わるようなサイトに入ったことがある気がするのですが、 Perlを使ったCGIで設定することは出来るでしょうか? 携帯向けを考えているので、Javascriptでは設定出来ません。 作成している入力フォームはPerlで書かれている、KENTWEBの送信フォームCGIスクリプトです。 宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • 携帯でフォームに入力するとき自動的に数字入力にするには?

    携帯のフォームにて、電話番号を入力するときに、そこのテキストボックスにカーソルをあわせると、いままではひらがな入力だったのが、自動的に数字入力になるようにしたいのですが、なにかいい方法ありますか?javascriptでできそうかなあっておもったんですけど、携帯なのでjavascriptは使えません。。。 CGIでうまくやる方法ありませんか? できればperlで記述したいですが(できればというか本当はperlしかわかりません^^) なにかうまくやる方法ありませんか?ぜひともご教授のほどよろしくお願いいたします。

    • ベストアンサー
    • CGI
  • テキストボックスの入力形式の指定はできるのか?

    現在FORMでアンケートを取っています。 このとき電話番号などの欄があるのですが、 ココを半角英数字で入力して欲しいと思っています。 カーソルが電話番号のテキストボックスに移った際に 自動的に入力を半角英数字に指定することは出来るのでしょうか?

  • 半角英数字しか入力させないフォーム

    https://login.yahoo.co.jp/config/login_verify2?.src=ym 上のようなIDを入力するフォームで半角数字、もしくは半角英数字しか入力させないようにするタグや手法があったら教えてください。携帯電話でも入力したいのでjavascript系は避けたいのですが・・・。

    • ベストアンサー
    • HTML
  • HPのフォーム入力で文字がおかしい

    メモ帳やほかのソフトでは、キーボード通りの字が ちゃんと表示されるのですが、 IE6で、検索や記入欄に文字を入れようとすると キーボード通りの文字が表示されません。 全角かなでも半角英数字でも、とにかくおかしいんです。 真ん中の部分はキーボード通りなんですが、 両手の小指のあたりのキーになると、おかしいんです。 @を打つと[ になったり、「と打つと」になったり、 半角/英数を押すと` になるんです。 ウィルススキャンにかけたんですが、ウィルスは 検出されませんでした。 デバイスも見てみたのですが、前の回答を 参考にして設定しても、やっぱりおかしいんです。 一体、どうしたらいいのでしょうか? どうか、よろしくお願いします。

  • CGI/Perlでメールフォームを作るには。

    CGI/Perlでメールフォームを作るにはHPのトップページ(ソースコード)にCGI/Perlのプログラムを入力すればメールフォームは使用できるようになるのでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • CGIを使った問い合わせフォームの作り方

    現在、Webサイトを作成しており、もうそろそろで完成します。 しかし、問い合わせフォームの作り方がわかりません。 PerlによるCGIを使った方法があることは知っているのですが、具体的にどのような手順で始めたら良いのかわかりません。 どこからがHTMLで、どこからがCGIなのか、サーバー側で何をしたらいいのか、わかりません。 例えば、都道府県や生年月日をプルダウンで選択する項目などがありますが、プルダウンのリストに入っている都道府県や数字はHTMLだけで表示できるのでしょうか?CGIやサーバー側で、何かする必要があるのでしょうか? 何かアドバイスを頂ければ幸いで御座います。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 半角英数字のみを受け付ける入力フォーム

    PHPで半角英数字文字のみを受け付ける入力フォームをつくりたいので教えてください。 JavaScriptではコピペで全角を受け付けてしまうので困っています。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • アンケートフォームを作りたいのですが

    わたしのWEBサイトに「下記のフォームに記入して送信してください!」 みたいなアンケートフォームを作りたいのですが、このような感じで 氏 名  フリガナ   性 別  男 女  /  未婚 既婚   生年月日 年 月 日 歳 必ず英数字半角で入力してください。 出生地  都道府県を選択して下さい市、群または区をご記入ください。 国籍 国籍 現 住 所  郵便番号 必ず英数字半角で入力してください。 TEL   必ず英数字半角で入力してください。 携帯電話   必ず英数字半角で入力してください。 FAX    必ず英数字半角で入力してください。 E‐MAIL   必ず英数字半角で入力してください。 ご意見をお書きください。 質問なのですが、どのようにしてこのフォームを作れば よいのでしょうか。 サイト等教えていただければ、幸いです。

    • 締切済み
    • CSS

専門家に質問してみよう