テキストボックスの文字数制限(NS,IE)

[上に] [前に] [次に]
ゆうこ 1998/10/29(木) 17:57:21
はじめまして。
初歩的な質問かもしれませんが、よろしくおねがいします。

テキストボックスで入力できる文字数を指定して2バイト文字を
入力したところ、NSとIEで違う数が入ってしまいました。

  ex,MAXLENGTH="20"として
     IE:20文字
     NS:10文字

これを、同じ数しか入れられないようにするには、
どうすればよいのでしょうか。

ご存知の方、ご教授ください。おねがいします。

匿名希望 1998/10/31(土) 03:56:58
 ちょっと質問がわからないです。
まず、これはどんな言語のしつもんなんでしょう?
CGIだとかJavaScriptだとかいろいろ考えられますが・・。

それから、質問の内容なんですけど、
・テキストボックスに半角文字を2文字入れて読み込んだところ(例:MAXLENGTH="20")、IEでは"20"、NSでは"10"という文字に
なった。
・テキストボックスに全角文字を20文字入れて読み込んだところ、
IEでは20文字、NSでは10文字と認識される。

・・・私がこの文章から直感で思ったのは以上ですが、合っているでしょうか。いや、多分違うと思います。
もう一度ここに質問を書き直してみてはどうでしょう?>ゆうこさん

匿名希望 1998/10/31(土) 04:47:07
↑・・ごめん、、私が勘違いしてました。
やっぱり、2バイト文字の認識の仕方がNSとIEで違うのではないでしょうか?

とーりすがーり [E-Mail] [HomePage] 1998/10/31(土) 11:54:52
たとえば、
<input type="text" size="20" style="width:195px">
としてsizeでNNの幅を指定し、styleでIEの幅を指定します。
(NNではこのスタイルが有効でない為)

1サイズの幅はここを参照してください。
「タグの重複オプションの優先度は? 」
../199810/98100037.htm

ただし、NN3とNN4の幅も違いが出ますので、
どちらに併せるかでstyleの幅を決めなければなりません。



mura [E-Mail] 1998/11/02(月) 09:09:52
INPUTタグとその前後のHTMLをまるまるここに書いて下さると、いろいろ答えられるかもしれません。
お使いのブラウザのバージョン(2/3/4)とOS(Win/Mac/UNIX)もわかると助かります。

ゆうこ 1998/11/02(月) 13:54:32
みなさん、いろいろありがとうございます。
質問の書き直しをします。

環境は、プラウザがIE4.0とNC4.05、OSがWin95です。
中身は、IIS3.0で実行するASPファイルで

<FORM NAME="frmAppEdit" ACTION="AppEdit.asp" METHOD="post" onSubmit="return jsSendChk()">
・・・
<TR>
<TD NOWRAP ALIGN="right">
  <FONT COLOR="#0000FF"><B> 件 名 </B></FONT>
</TD>
<TD NOWRAP COLSPAN="2">
  <INPUT TYPE="text" NAME="DOC_NM" SIZE="45" MAXLENGTH="20" VALUE="<%=doc_nm%>">
</TD>
</TR>
・・・
みたいになってます。

このHTMLで表示させたテキストボックスに、
IEだと「あいうえおかきくけこさしすせそたちつてと」が入力でき、
NCだと「あいうえおかきくけこ」までしか入力できません。
2バイト文字でなく1バイト文字の場合は、両方20字入力できます。

つまり、IEは文字数、NCはバイト数で判断しているということだと思うのですが、
みなさん、どのように対処してるのでしょうか。
最終的には値をDBに書き込むため、正確に入力文字数の制限をしたいと思ってます。

よろしくお願いします。

Tiot 1998/11/02(月) 18:05:43
サーバ側で処理しないという前提なら、ブラウザによって処理を分けるというのがよいかと思います。
http://www.tohoho-web.com/wwwjssm2.htm
困ったときのお約束みたいであまり好きでないのですが。
将来的にどうなるか、他のブラウザはどうなのかもわかりませんし。
#IEとNNの違いはこの方法でたいてい解決できます。
JavaScriptの文字列処理もmaxlengthのときと同じです(IE->1,NN->2)。
JavaScriptでの文字列処理は今一よくわかっていないので(文字列処理はcgi&perlの方が全然楽)
なんとも言えませんが、正規表現など駆使すればできるのかもしれません。

ゆうこ 1998/11/02(月) 19:50:05
[[解決]]
バージョンの限定はちょっとできないので、
Tiotさんの教えてくださった方法でやってみたら
無事、入力文字数を制限することができました。

みなさん、ありがとうございました。

omi 1998/11/02(月) 20:09:03
Tiot さんのお話にヒントを得て。
<SCRIPT>
NN =( navigator.appName.charAt(0)=='N');
document.write("<INPUT TYPE='text' NAME='DOC_NM' SIZE=45 MAXLENGTH="+((NN)?40:20)+" VALUE='<%=doc_nm%>'>");
</SCRIPT>
ひどいコードだけど、なんとかなるよ。

omi 1998/11/02(月) 20:11:10
ありゃ、終わってた。

[上に] [前に] [次に]