高校三年生の合唱祭で何を歌いましたか?

テキストBOXを下記のように設定したとします。

<input type="text"name="***" maxlength="30">

この場合は、全角・半角関係なく文字数を30文字入力することができますよね?

今回、私がやりたいことは、バイト数の制限をやりたいんです。
例えばバイト数を30バイトにした場合は、
全角では15文字しか入力できなくて
半角では30文字入力制限をする方法を探しています。

何かよい方法はないものでしょうか???

A 回答 (3件)

はじめまして。



josyo_mさんの回答通りでmaxlengthでバイト数の制御をすることはできません。
Agentによってmaxlengthの解釈が異なっているためです。

汎用ロジックにするのでしたら、バイト数チェックを行うほかありません。しかし、LenB関数では半角英数字も2バイトで返ってくる恐れがあります。UNICODEです。
したがって、一度ansiに変換して半角英数字か全角かのチェックをして、バイト数を返すということをする必要があります。

For i = 1 to Len(buf)
 ret = Asc(mid(buf, i, 1))
 If ret <= &h00 OR ret > &hFF Then
  iLen = iLen + 2
 Else
  iLen = iLen + 1
 End if
Next
ちょっと強引なロジックのような気もしますが、こんな関数を作っておけばいいと思います。
    • good
    • 0
この回答へのお礼

ありがとうございましたm(__)m
masakinさんの作ってくださった関数をそのまま使用しました。
ちゃんと動作させることができました。

お礼日時:2002/03/28 17:06

お疲れ様です。



maxlengthの指定だけで出来るかは自分は知りませんが、
入力させるだけさせて最終的に「LeftB」で先頭数バイト分
だけ取るのだとダメですか?

処理:LeftB("あいうえお", 4)
結果:あい

間違っていたらごめんなさい。
    • good
    • 0
この回答へのお礼

ありがとうございましたm(__)m
そのまま使わさせていただきました。
すごく助かりました。

お礼日時:2002/03/28 17:03

お疲れ様です。



回答ではありませんが、その文字数指定はブラウザによって動作が違ったと思います。
IEは文字数単位で、ネスケ等はバイト単位だったような。。。

間違っていたらごめんなさい。

この回答への補足

お疲れ様です。早々に回答ありがとうございますm(__)m

そうなんですか・・・。
私の使っているブラウザはIEなんですけど、それじゃ、
IEだから文字数単位でしか制限できないということになるんですかね(・・?
どうにかして、バイト単位で制限したいものなんですが、無理なんでしょうか・・・。

補足日時:2002/03/27 17:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報