- ベストアンサー
TETXの入力制限について色々と…
<input type=text~~~~~~>で作ったテキストに160byte(全角80文字)までしか入力できない制限をつけたい。 <input type=text~~~~~~>で作ったテキストに半角数字(又は英数)しか入れられないようにするタグとかないでしょうかね?? こっちは半角電話番号を入力してもらいたいのです。 どなたかご存知の方おりましたからお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
タグでは上記の要望を満たすものはありません 完璧ではありませんが、JavaScriptを利用した方法を ヒント程度に紹介します。 > 160byte(全角80文字)までしか入力できない制限 下記の関数で文字列のバイト数が取得できます。 function getLenB( str ) { var i, cnt = 0; for(i=0 ; i<str.length ; i++) { if(escape(str.charAt(i)).length < 4){ cnt++; }else{ cnt+=2; } } return cnt; } > 半角数字(又は英数)しか入れられないようにする これは isNaN関数を使えば数字か否かを調べられます。 あとはこれらのヒントを元に onSubmitやonChange, onBlurイベントなどで入力値をチェックしてあげれば良いかと思います。 理想は送信先のサーバーサイドのプログラムでチェックした方が良いんですけどね。 両方チェックするなら尚良し、ですが(^^) 参考までに
その他の回答 (2)
とりあえずMin_2さんと同意見なのですが、もう少し詳しく言うと、MAXLENGTHとはtype=textの属性のことです。 入力文字数制限に使います。 ただ、全角でも半角でも文字数計算で認識しているブラウザがある(IE)ので、確実にバイト計算することは出来ないと思います。 例)6文字まで入力可能にする <input type=text MAXLENGTH=6 value=""> 半角入力チェックについては、JavaScriptやCGIを利用するしかないですね、、、^^; タグでは不可能です。
お礼
あはぁぅー。 そうですかぁ。 先にいっておかなければならなかったのですが文字数制限の方は <input type=text じゃなくて<textareaでテキスト作るものでした。 途中でmaxlengthに気付いてtextarea文にmaxlengthを入れてみましたが 効果ありませんでした。。。 そして他ページで探すと「無理」と書いてあったので諦めました。。。
使ったことはないですが、 MAXLENGTH=nで最大入力文字数、ISTYLE=nでiMode入力時のディフォルト値を指定できるようです。 あとは全角で電話番号を入力されたら、cgi側で半角へ変換すれば良いと思います。
お礼
ご返答ありがとうございました。 入力文字数の方は解決しました。 入力文字種類の方なんですが、PC上での話なんですけれど、 imodeってあの電話のi-modeの話なんじゃないですか? しかも、最初のデフォルトの設定だけで、Alt+半角/全角キーで 変えれてしまい、入力も出来てしまいます。 やっぱりcgiかjavascript使うしかないですか…。
補足
<script language=javascript> function(){ textがonchangeの時に isNanで数字かを判定する } ってな流れでいいんでしょうかね ありがとうございます