webアプリでテキストボックスの入力制御をするには?


ふぁんとむ  2008-02-04 17:40:58  No: 144372

VB2005でWebアプリを作成しています。

HTMLデザイン画面にテキストボックスを作成し、入力された数値によって処理を行うのですが、入力時の段階で(貼付等は別として)指定した数字以外のキー入力をできないようにする方法はないでしょうか?

よろしくお願いします。


魔界の仮面弁士  2008-02-04 19:16:34  No: 144373

入力は、onkeypress イベントで keyCode を判断し、
貼付は、onbeforepaste イベントで clipboard の内容を
チェックしては如何でしょう。


ふぁんとむ  2008-02-04 19:41:52  No: 144374

deafalt.aspx.vbでtextbox1のイベントをドロップダウンから探して見ましたが、「onkeypress」や「onbeforepaste」が見つかりません。
どこで設定すればよいのでしょうか?


魔界の仮面弁士  2008-02-04 20:38:45  No: 144375

サーバサイドの VB コードでは駄目ですよ。
(キー入力の度に、サーバに PostBack させるわけにはいきませんよね?)

VB ではなく、JavaScript 側での制御を行ってください。

もしくは、ASP.NET AJAX の FilteredTextBox を使うとか。

《FilteredTextBox を使ってみよう》
http://www.microsoft.com/japan/msdn/asp.net/learnajax/default.aspx

《FilteredTextBox Sample》
http://www.asp.net/AJAX/AjaxControlToolkit/Samples/FilteredTextBox/FilteredTextBox.aspx


ふぁんとむ  2008-02-05 22:37:45  No: 144376

まず、JavaScriptでの制御を試してみました。
以下のページを参考にしたのですが、onkeydownは要素'textbox'の有効な属性ではありません、というエラーが出てしまいました。作成したコードを載せますので、間違い等ありましたらご指摘ください。

http://javascript.eweb-design.com/1205_no.html

<head runat="server">
    <title>無題のページ</title>
    <script type="JavaScript">
<!--
// 数値のみを入力可能にする
function numOnly() {
  m = String.fromCharCode(event.keyCode);
  if("0123456789\b\r".indexOf(m, 0) < 0) return false;
  return true;
}
//-->
</script>
</head>

<asp:TextBox ID="TextBox1" runat="server" Width="8px" MaxLength="1" onkeyDown="return numOnly()"></asp:TextBox>


ああああ  2008-02-29 04:02:38  No: 144377

知らね

てめぇで考えな


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加