-1

そのため、JavaScriptを使用して住所フィールドを検証し、単に郵便番号を最後から引き離しています。

ユーザーに通知するために表示および非表示にする 2 つの asp:Labels があります。それはうまく機能し、ラベルは必要に応じて表示され、検証は希望どおりに機能します。問題は、ラベルを非表示にしようとすると発生します。ラベルの 1 つは問題なく表示および非表示になりますが、もう一方を非表示にしようとすると、スクリプトが壊れます

<script>
        function isvalid() 
        {
            var zip = MainContent_tbx_Appt_Address.value.slice(-5);
            if (zip == "") {
                MainContent_lbl_Add_validate2.hidden = true;
                MainContent_lbl_Add_Validate.hidden = false;

            }
            else if (!zip.match('[0-9]{5}')) {
                //MainContent_lbl_Add_validate.hidden = true;
                MainContent_lbl_Add_validate2.hidden = false;

            }
            else
            {
                //MainContent_lbl_Add_validate.hidden = true;
                MainContent_lbl_Add_validate2.hidden = true;

            }

        }
    </script>

            <asp:Label ID="lbl_Add_Validate" style="z-index:100;" Name="lbl_Add_Validate" DataPoint="dp_Add_Validate" runat="server" hidden="true" Text="Address is required"></asp:Label> 

            <asp:Label ID="lbl_Add_validate2" style="z-index:100;" Name="lbl_Add_Validate2" DataPoint="dp_Add_Validate2" runat="server" hidden="true" Text="Invalid address format"></asp:Label>
            <br />
            <asp:TextBox ID="tbx_Appt_Address" onblur="isvalid()" style="z-index:100;" Name="tbx_Appt_Address" DataPoint="dp_Appt_Address" runat="server" Rows="4" TextMode="MultiLine"  Height="65px"  Width="200px" value="Address" onFocus="if (this.value == this.defaultValue) { this.value = ''; }" placeholder="Address">Address</asp:TextBox>

これは私のaspファイルの私のコードであり、クライアント側にヒットすると、これが吐き出されます

<span id="MainContent_lbl_Add_Validate" name="lbl_Add_Validate" datapoint="dp_Add_Validate" hidden="true" style="z-index:100;">Address is required</span>
<span id="MainContent_lbl_Add_validate2" name="lbl_Add_Validate2" datapoint="dp_Add_Validate2" hidden="true" style="z-index:100;">Invalid address format</span>
<br/>
<textarea name="ctl00$MainContent$tbx_Appt_Address" rows="4" cols="20" id="MainContent_tbx_Appt_Address" datapoint="dp_Appt_Address" value="Address" onfocus="if (this.value == this.defaultValue) { this.value = ''; }" placeholder="Address" onblur="return isvalid()" style="height:65px;width:200px;z-index:100;">Address</textarea>

MainContent_lbl_Add_validate.hidden = true; がある限り、他のすべてが機能します。コメントアウトしましたが、それらのエーテルを実行すると壊れます

4

3 に答える 3

0

「runat=server」を含む要素を非表示にすると、ASP はコントロールを非表示になるようにスタイル付けしてレンダリングすると考えるかもしれません。つまり、後で Javascript を使用して再表示できます。それはそれがどのように機能するかではありません。hidden=true を設定すると、要素はまったくレンダリングされません。あなたの Javascript は、欠落している要素への参照を吐き出し、実行を停止しているため、バリエーター コードを実行する機会がありません。

非表示の要素をレンダリングするには、次のようにマークアップします。

<asp:Label ID="lbl_Add_Validate" style="z-index:100;" Name="lbl_Add_Validate" DataPoint="dp_Add_Validate" runat="server" style="visibility: hidden" Text="Address is required"></asp:Label> 
于 2013-09-24T22:24:13.010 に答える