■82466 / inTopicNo.1) |
ASP.NETのTextBoxで半角数字のみハイフンなし |
□投稿者/ あさ (20回)-(2017/01/11(Wed) 12:28:24)
|
分類:[.NET 全般]
お世話になります。
Windows10、VS2015のASP.NET(VB).NET Framework4.6、ローカルIISで開発しています。
TextBoxで半角数字のみ入力可能(ハイフンもなし)で桁数も制限したいと考えています。
TextBoxのTextModeをPhoneにした場合、半角数字+ハイフン以外に英字も入力可能になってしまいますが、 TextBoxのMaxLengthは適用されます。
TextBoxのTextModeをNumberにした場合、半角数字+ハイフンのみの入力になりますが、 TextBoxのMaxLengthが適用されません。
また、ハイフンを入力できないようにするために、
Protected Sub TextBox_TextChanged(sender As Object, e As EventArgs) Handles TextBox.TextChanged TextBox.Text = Trim(TextBox.Text.Replace("-", "")) End Sub
を記述しましたが、TextBoxのAutoPostBackをTrueにしませんと適用されませんし、 Trueにしても、入力時には適用されず、 Tabキーや他のボタン等の使用時に適用されます。 AutoPostBackはWEBサーバーへの負荷軽減のため使用しないようにしたいと思います。
そこで、 TextBox_TextChangedのコードは止め、 HTMLの<head>タグの中に、 以下のように<script>タグを追加し、 TextBoxの<>にもonkeyDownを追加しました。 IMEMODEも指定します。 TextModeはPhoneです。 (参照) http://javascript.eweb-design.com/1205_no.html
<head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script> <!-- // 数値のみを入力可能にする function numOnly() { m = String.fromCharCode(event.keyCode); if("0123456789\b\r".indexOf(m, 0) < 0) return false; return true; } //--> </script> </head> ・・・ <asp:TextBox ID="TextBox" runat="server" TextMode="Phone" AutoPostBack="False" ime-mode="disabled" onkeyDown="return numOnly()"></asp:TextBox>
これにより、入力時点で、ハイフン(-)も打てなくなりました。 半角数字のみの入力で、桁数制限も適用されます。
ただ、Shiftキー+数字ボタンで、 「!"#$%&'()」 の記号も入ってしまいます。
これらを打てなくする場合、どのような修正を施せばよいか、分かりません。
どなたかお分かりになられる方がいらっしゃいましたら、 ご教示頂けたら幸いです。
どうぞよろしくお願い申し上げます。
|
|