0

TextBoxにRequiredFieldValidatorがあります。これは、TextBoxに何も入力されていない場合に正常に機能します。ここで、もう1つの検証は、ユーザーがジャンクデータを入力したときに、「無効な入力」というエラーメッセージをスローすることです。これはラベルにあります。

これで、シナリオはエラーメッセージがスローされた後です。ユーザーがテキストボックスを空にしてボタンをクリックすると、RequiredFieldValidatorは機能しますが、ラベルのエラーメッセージはそのまま残ります。ユーザーがテキストボックスを空にしたら、非表示/削除したいと思います。

このためにJavaScript関数を使用しましたが、これではRequiredFieldValidatorが機能しません。これが私のコードです:

<asp:TextBox ID="txtemp" runat="server"></asp:TextBox>
<asp:Button ID="btnstatus" runat="server"  ValidationGroup="valgrp1" OnClientClick="Validate()"
    CausesValidation="true"  onclick="btnstatus_Click" 
    Text="Fetch status message" BackColor="#ccebff" />
&nbsp;
<asp:RequiredFieldValidator ID="Reqfield1" ControlToValidate="txtportalid"  ValidationGroup="valgrp1" ErrorMessage="wrong entry" runat="server" />
</div>
<div>
    <asp:Label ID="lblerrormsg" runat="server"  Font-Bold="true"  Visible="false" ForeColor="#FF3300">
    </asp:Label>
</div>

JavaScript:

function Validate()
{
    var txt1 = document.getElementById("<%= Txtemp.ClientID %>");
    var val1 = txt1.value.replace(/\s/g, "");

    if (val1=="")
    {
        document.getElementById("<%= lblerrormsg.ClientID%>").style.display = 'none';
    }
}
4

2 に答える 2

3

次のように、関数を指すようにプロパティを設定してCustomValidatorを使用することをお勧めします。ClientValidationFunctionValidate

<script>
    function Validate(source, arguments) {
        arguments.IsValid = /* your validation logic */
    }
</script>

...

<asp:CustomValidator ControlToValidate="txtportalid" 
    ErrorMessage="..." ClientValidationFunction="Validate" runat="server" />

...または、あなたの場合、RegularExpressionValidatorを使用できます。どちらも、探している動作を提供します。

于 2013-01-15T14:18:22.117 に答える
0

jQuerykeyupを使用してテキストボックスのイベントを処理できます。

以下の例では、次の 2 つのことを行います。

  1. テキストボックスでキープレスが発生するたびに、テキストボックスが空であるかどうかを確認し
  2. エラー ラベルに値があるかどうかを確認する

両方のチェックに合格した場合は、エラー ラベルをクリアするだけです。

ASPX:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Home</title>
    <script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#txtemp").keyup(function () {
                if (!this.value) {
                    var errorMessage = $("#<%= lblErrorMessage.ClientID %>").length;
                    if (errorMessage) {
                        $("#<%= lblErrorMessage.ClientID %>").html("");
                    }
                }
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtemp" runat="server" />
        <asp:Button ID="btnstatus" runat="server" ValidationGroup="valgrp1" CausesValidation="true"
            OnClick="btnstatus_Click" Text="Fetch status message" />
        <asp:RequiredFieldValidator runat="server" ID="req" ValidationGroup="valgrp1" ControlToValidate="txtemp"
            ErrorMessage="Field is required" />
        <asp:Label ID="lblErrorMessage" ClientIDMode="Static" runat="server" EnableViewState="false" />
    </div>
    </form>
</body>
</html>

コードビハインド (テスト用の簡単な方法を作成しました):

protected void btnstatus_Click(object sender, EventArgs e)
{
    if (txtemp.Text == "invalid")
    {
        lblErrorMessage.Text = "The data is invalid";
    }
}
于 2013-01-15T17:29:54.747 に答える