- - PR -
テキストボックスの入力文字数制限について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-07-07 19:06
いつもお世話になっております。
asp.net を利用してアプリケーションを組み始めた初心者です。 ■やりたいこと GridViewコントロール内の項目へ入力文字数制限をかけようとしています。 ■やったこと。 @対象の項目をTemplateFieldへ変換 A「テンプレートの編集」から対象の項目の「EditTemplate」を選択して、テキストボックスのプロパティから「MaxLength」へ文字数を入力しています(今回は100) ■結果的に 対象項目へすべて半角文字を入力すると100文字以上入力できませんが、倍角文字が混ざると何文字でも入力できてしまいます。 結果として更新時にDBエラーとなります。 そーゆーモノでも無いと思うんですが、、、何かやり足りないことなどありましたらご指摘いただきたく、よろしくお願いいたします。 また、代替手段などありましたら教えてください。(できましたらコーディングレスで・・・JavaScript経験0デス) |
|
投稿日時: 2008-07-07 19:43
単なるHTMLの話だとおもうけれどな。
その前に、input の maxlength なんてあてにならないんですからデータベース更新を行う前に値のチェックはしましょうね。 _________________ かるあ のメモ と スニペット |
|
投稿日時: 2008-07-07 20:17
返信ありがとうゴザイマス。
データベースの属性がvarchar(100)で、更新を行う前に文字数のチェックを行いたくて、inputのmaxlengthを設定しました。 「あてにならない」というのは、入力文字数に制限をかける方法としてはinputのmaxlengthは一般的ではないということでしょうか? 的外れな感じでしたらスミマセン。なにぶん初心者で。 教えていただければ幸いです。 |
|
投稿日時: 2008-07-07 21:17
まず、最近のブラウザの場合、maxlengthの判定は、バイト数ではなく『文字数』でチェックする場合が多いと思います。
例えば、手元にあるIE7とFirefox 2.0では、maxlength=5とした場合、半角の『12345』と全角の『12345』の両方を許容する動きになります。 #『123456』や『123456』は許容しません。 ということで、”何文字でも入力できる”というのとは事象が異なると思われますので、まずはその点を確認してみてください。 その上で、仕様を検討し直してみてください。 (全角文字が入力されることが前提ならばDBのカラムのサイズを見直す必要があるかもしれませんし、所謂全角文字を許容しないのであればそれをはじく、等々。) また、その上での事になりますが…。 かるあさんもおっしゃられているとおり、Webアプリケーションの場合はHTMLやJavascriptでの縛りを過信してはいけません。 かるあさんがおっしゃっている『input の maxlength なんてあてにならない』というのは、私は二つの意味があると思っています。一つは、先に挙げたように、この挙動がブラウザ依存であること。もう一つは、仮にmaxlengthが正しく想定した仕様通りに指定され機能しているとしても、それを迂回して送信される可能性があること。 maxlengthだけでなく、Javascript等を用いたクライアントサイドでのチェック/制限は、アプリケーションの整合性や正しい動作を保証するために使用するのはNGと思ってください。 あくまでも、利用者の誤入力を防いだり、際に早い段階で利用者に通知したりすることで、利用者の利便性を上げる為のモノと考えるべきと思います。 ですので、アプリケーションとしての正常な動作/整合性を保つためには、常にサーバ側でもチェックを等を行う事が必要と言う観点で、設計を行うことを強くお勧めします。 |
|
投稿日時: 2008-07-14 22:34
input type=text は、文字数の制限ができます。
textarea になると、文字数の制限はできません。 > データベースの属性がvarchar(100) データベースがなにかわかりませんし、100 が「100バイト」なのか、「100文字」なのかもわかりません。 # Oracle ではない、というのはわかるけど。 |
1