- - PR -
テキストボックスに入力制限をかけたい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-12-27 20:22
皆さんこんばんわ。
よろしくお願いします。 VB.NETでWEBアプリケーションを開発しています。 テキストボックスに以下のような入力制限をかけたいのですが、 1.半角英数字のみ入力可 2.記号は「'(シングルコート)」以外入力可 設定の仕方がわかりません。 初歩的な質問で申し訳ありませんが、 どなたかご存知の方、ご教授よろしくお願いします。 | ||||||||
|
投稿日時: 2004-12-27 22:28
Webアプリでは、原則出来ません。その代わり、Validatorコントロールを使って、入力のチェックをして、違反した入力がないか調べます。Validatorコントロールについては、ここ(@IT)のTipsにあります。 _________________ | ||||||||
|
投稿日時: 2004-12-28 10:24
JavaScriptを使用すれば可能です。
例1: @Page_Load時にJavaScriptを生成 Dim scriptstring As New StringBuilder With scriptstring .Append("<SCRIPT language='JavaScript' src='Test.js'>") .Append("</SCRIPT>") End With If Not IsClientScriptBlockRegistered("clientScript") Then RegisterClientScriptBlock("clientScript", scriptstring.ToString) End If A初回イベント発生時にテキストボックスの「onKeyPress」イベントを作成します。 Me.TextBox.Attributes("onkeyPress") = "CheckNum()" BJScriptファイルを作成し、下記スクリプトを記述します。 test.js: function CheckNum() { if (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 45) && (event.keyCode!=46)){ window.event.returnValue = false; } } この例では数字と「-」と「,」以外は入力出来なくなります。 keyCodeで対応するコードを指定してやればいくらでも制御可能です。 例2: JScriptファイルを作成しないで直接JavaScriptを記入する。 Me.TextBox.Attributes("onkeyPress") = "JavaScript:if (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 45) && (event.keyCode!=46)){window.event.returnValue = false;}" 例3: カスタムコントロールを作成する。 上記例2を参考に数値のみ入力可能なカスタムコントロールを作成する。 以上 | ||||||||
|
投稿日時: 2004-12-28 10:31
おそらくJitta様が原則できないとおっしゃっているのは
キー入力以外の貼り付けなどに対応できないという意味ではないでしょうか? | ||||||||
|
投稿日時: 2004-12-28 12:20
Javascriptが常に動くとは限らないとか。
いずれにせよ、サーバ側のチェックは必須ですね。 | ||||||||
|
投稿日時: 2004-12-28 13:22
NAL-6295です。
既に他の方の発言にあるように稼働環境に制限ありですが・・・ IMEモードをinactiveに設定した上で、
このメソッドで入力制限をかけるJavaScriptを生成することが出来ますので、TextBoxのonKeyPressに割り当ててください。 また同時に、
といったJavaScriptをonKeyDownに設定することで貼り付け等も抑制する事が出来ます。 基本的には、これらをプロパティで設定できるようにしたカスタムコントロールを作成すると楽でしょう。 _________________ 拘らない事に拘る。 [ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-12-28 13:24 ] | ||||||||
|
投稿日時: 2004-12-28 21:07
その例だと、キーボードから入力したときは大丈夫ですが、コピーペーストしたときにはダメですよね?または、コピーペースト自体を禁止してしまいますよね。あと、キーコードで判定すると、全角文字もイケてしまうと思いますが、どうでしょう?OnChangedで判定すれば、内容をチェックできるのですが、Webではこのイベントは、フォーカスが外れないと発生しません。Windowsアプリケーションのように、入力そのものを制限することは出来ません。 『原則出来ない』としたのは、この辺です。IE限定にしてしまうと、IMEの制御も出来るので、かなり思い通りに出来るでしょう。しかし、"Windowsアプリケーションと同じように"は出来ません。 また、サーバでの入力チェックは、不特定多数の人が使うのなら、必ず必要です。JavaScriptがONになっていることを強制しても、ページを保存して値を直接指定し、ポストすることも出来るのですから。 と書いておいて、上げるときにはすでにレスがついている。。。 _________________ | ||||||||
|
投稿日時: 2007-10-18 11:58
VBレスキュー(花ちゃん)のサイトに、
JavaScriptではなくコードで記述するサンプルがありますが、 これでもよろしいのでしょうか? サンプルコード http://www.bcap.co.jp/hanafusa/dotnet/txtbox05.htm [ メッセージ編集済み 編集者: ごろう 編集日時 2007-10-18 12:00 ] |