C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 141 を表示中)
■82466 / )  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キー+数字ボタンで、
「!"#$%&'()」
の記号も入ってしまいます。

これらを打てなくする場合、どのような修正を施せばよいか、分かりません。

どなたかお分かりになられる方がいらっしゃいましたら、
ご教示頂けたら幸いです。

どうぞよろしくお願い申し上げます。


返信 編集キー/


管理者用

- Child Tree -