2

次のasp.netコードがあります:

<asp:TextBox CssClass="mf" runat="server" ID="mail1" Width="270" />
<asp:RequiredFieldValidator ID="rfv1" 
                            runat="server" 
                            ControlToValidate="mail1" 
                            Display="Dynamic" />

検証がオンザフライで合格した場合(ポストバックなし)、画像(またはテキスト)を表示したい

jQuery ソリューションも私には問題ありませんが、javascript が無効になっていると、それほど安全ではありません。

4

1 に答える 1

2

外部フレームワークに依存することなく、ASP.Net クライアント側検証フレームワークを利用して、拡張/高度な機能を処理できます。このようにして、フレームワークを交換するのではなく、フレームワークを拡張します。

必要な動作を有効にするために必要なのは、ほんの少しの JavaScript だけです。

<asp:TextBox CssClass="mf" runat="server" ID="mail1" Width="270" OnChange="showValidationImage();" />
<asp:RequiredFieldValidator ID="rfv1" 
                        runat="server" 
                        ControlToValidate="mail1" ClientIDMode="Static"
                        Display="Dynamic" >
    <img src="../Image/fail.jpg" />
</asp:RequiredFieldValidator>
<img id="imgPass" src="../Image/pass.jpg" style="visibility:hidden" />
<script language="javascript">
    // This function will be called whenever the textbox changes
    // and effectively hide or show the image based on the state of
    // the client side validation.
    function showValidationImage() {
        if (typeof (Page_Validators) == "undefined") return;

        // isvalid is a property that is part of the ASP.Net
        // client side validation framework
        imgPass.style.visibility = rfv1.isvalid ? "visible" : "hidden";
    }
</script>
<br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />

ここで、ClientIDMode="Static" で ASP.Net 4 の機能を使用していることに注意してください。.Net 4 を使用していない場合は<%= rfv1.ClientID %>、スクリプト内のクライアント ID を取得するために標準のサーバー側インクルードを使用する必要があります。

于 2010-08-06T17:51:00.693 に答える