はじめまして
VS2005でasp.netでwebサイトの開発をしているものです
質問なのですが
RegularExpressionValidatorの検証機能のタイミングを
フォーカスが離れたときではなく入力されたときにしたいのですが
できますでしょうか?
RegularExpressionValidatorのControlToValidateを
テキストボックスに指定して、ValidationExpressionに正規表現を
設定する簡単な検証なのですが、
現在、この検証を行うタイミングがフォーカスが離れた瞬間
なのですが、これをキー操作で入力した瞬間に正規表現に
適さない場合はすぐにErrorMessageを出すようにしたいです
このようなことは可能なのでしょうか?
ご存知の方ご回答の方、よろしくお願いします
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
まず、キーが入力された段階でチェックさせるには、
JavaScriptの力を借りる必要があります。
ただ、RegularExpressionValidatorには、JavaScriptで
チェックさせるプロパティはありません。
CustomValidatorであれば、JavaScriptでチェックできますが、
それだと、Focusを離れた場合でしか、チェックができません。
そこで、チェック対象のテキストボックスにJavaScriptの
onKeyPressイベントを感知するようにし、onKeyPressイベントを
処理するJavaScriptを記述します。
そのJavaScriptで正規表現チェックを行い、エラーがあれば、
RegularExpressionValidatorのErrorMessageを
visibilityを設定することによって、表示させます。
サンプルを作りましたので、ご参考頂ければと思います。
サンプルは、99:99の書式&5桁かをチェックしています。
5桁目が入力された段階でチェックするようにしています。
また、IEでしか動作確認してませんので、FireFoxや他のブラウザ
に対応させるには、もう少しカスタマイズが必要です。
■Default2.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無題のページ</title>
<script language="JavaScript" type="text/javascript">
function TextBoxControl_Validate(e, textboxId, regularexpressionValidatorId)
{
// エラーメッセージを一旦非表示にする
var errorMessage = document.getElementById(regularexpressionValidatorId);
if ( errorMessage == null ) { return false; }
errorMessage.style.visibility = "hidden";
// チェック対象のテキストボックスの取得
var checkTextBox = document.getElementById(textboxId);
if ( checkTextBox == null ) {
return false;
}
// 入力値を取得する
var key = null;
if(window.event)
{
key = e.keyCode
}
else if(e.which)
{
key = e.which
}
var inputChar = String.fromCharCode(key);
// 既に入力されている値と今入力した値の桁数が5桁でない場合
if ( !(checkTextBox.value.length + inputChar.length == 5) )
{
return true;
}
// 正規表現でチェック
var str = checkTextBox.value + inputChar;
if (str.match(/^\d{2}\:\d{2}$/))
{
return true;
}
else
{
// エラーメッセージの表示
errorMessage.style.visibility = "visible";
// 入力文字が消えるため、戻り値はTrueにしておく
return true;
}
return false;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:RegularExpressionValidator
ID="RegularExpressionValidator1"
runat="server"
ControlToValidate="TextBox1"
ErrorMessage="エラーです。"
SetFocusOnError="True"
ValidationExpression="\d{2}\:\d{2}" />
<br />
<asp:TextBox ID="TextBox1" runat="server" MaxLength="5" />
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
</html>
■Default.aspx.vb
Partial Class Default2
Inherits System.Web.UI.Page
Protected Sub RegularExpressionValidator1_Init(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles RegularExpressionValidator1.Init
If Not IsPostBack Then
Dim keyPressScript As String
keyPressScript = String.Format("return TextBoxControl_Validate(event, '{0}', '{1}')", _
Me.TextBox1.ClientID, _
Me.RegularExpressionValidator1.ClientID)
Me.TextBox1.Attributes.Add("onKeyPress", keyPressScript)
End If
End Sub
End Class
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- IT・エンジニアリング インフラエンジニア(ネットワークエンジニア)の検証業務について教えてください。 インフラ初心者なので 2 2022/06/26 00:08
- その他(パソコン・周辺機器) Windows10Proの正規ライセンスキーはどこで買える? 6 2023/04/03 15:36
- 防犯カメラ・監視カメラ・小型カメラ VHSを高画質な動画ファイルにしたいです。 3 2022/05/06 12:08
- その他(コンピューター・テクノロジー) 正規表現の置換で数値を合計したいです。 2 2022/10/17 11:01
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- マウス・キーボード 不良表示キー(キーボード) 3 2022/04/27 10:53
- Excel(エクセル) Excelヘルプの原文を表示する最速の方法(手順)には? 1 2023/08/11 11:30
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Mac OS Macの指紋認証が使えなくなりました。 macOS Monterey バージョン12.4 Mac s 1 2022/07/18 21:31
- Android(アンドロイド) 画面の割れたスマートフォンをテレビやパソコンに写す方法を知りたいです… 4 2022/07/19 04:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
return trueとreturn falseの用...
-
正規表現で複数マッチ条件で悩...
-
Tabキーでのカーソルの移動...
-
JavaScriptde途中で、「exit」...
-
COBOLの数字チェック
-
変数の値によってsubmit後の動...
-
コピペを禁止するtextarea
-
ドラッグ&ドロップ禁止について
-
TEXTAREAに入力した改行コード...
-
フォームの入力チェックをする...
-
チェックボックスの有無判定
-
未入力のラジオボタンに、alert...
-
画面表示とともに、テーブルの...
-
【UWSC】HTML内のある部分を抽...
-
3桁区切りのカンマをつけたい...
-
iframe内のformをサブミットす...
-
フォームが空欄の時にフォーム...
-
<JavaScript>tableタグを入力不...
-
アンダーバーのname値は取得で...
-
VBSからjavascript
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
return trueとreturn falseの用...
-
正規表現で複数マッチ条件で悩...
-
JavaScriptde途中で、「exit」...
-
slickのレスポンシブ > center...
-
COBOLの数字チェック
-
チェックボックスの有無判定
-
フォームの入力チェックをする...
-
Visual Studioのデザインでの非...
-
Tabキーでのカーソルの移動...
-
ツリービューのチェックボック...
-
ドロップダウンリストボックス...
-
コピペを禁止するtextarea
-
ラジオボタンのNullチェック
-
未入力のラジオボタンに、alert...
-
form の onSubmit がコールされ...
-
分岐数といえば
-
JSのみで入力→確認→メールで送...
-
TEXTAREAに入力した改行コード...
-
テキストボックスに数字しか入...
-
リロードしないようにするには
おすすめ情報