1

私は Web アプリケーションに取り組んでいますが、RequiredFieldValidator に問題があります。

「ムービーを挿入」ボタンと、他の 2 つのボタン (ムービーの保存とキャンセル) を含む div、タイトル用の TextBox、説明用の TextBox、およびタイトル用の RequiredFieldValidator があります。この div はデフォルトでは表示されません。これが私の問題です:挿入をクリックすると、クライアント側でjavascriptを使用して挿入ボタンを非表示にし、divを表示します。PostBack を作成するボタンをクリックすると、div に RequiredFieldValidator エラー メッセージが表示されます。保存ボタンがクリックされた直後に検証エラーを表示したい。これが私のコードです...

  <head runat="server">
    <title>Validation Test</title>
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            ValidatorEnable(document.getElementById('<%= TitleValidator.ClientID%>'), false);
        });
        function ShowInsertForm() {
            ValidatorEnable(document.getElementById('<%= TitleValidator.ClientID%>'), true);
            $('#InsertForm').show();
        }
        function HideInsertForm() {
            $('#InsertForm').hide();
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Insert" runat="server" Text="Insert Movie" OnClientClick="ShowInsertForm();"/>
    </div>
    <div id="InsertForm" style="display:none">
        <asp:Button ID="Save" runat="server" Text="Save Movie" onclick="Save_Click" OnClientClick="HideInsertForm();"/>
        <asp:Button ID="Cancel" runat="server" Text="Cancel Movie" CausesValidation="false" OnClientClick="HideInsertForm();"/>
        <br />
        Title<asp:TextBox ID="Title" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="TitleValidator" runat="server" 
            ErrorMessage="Please insert Title" ControlToValidate="Title"></asp:RequiredFieldValidator>
        <br />
        Description<asp:TextBox ID="Description" runat="server"></asp:TextBox>
    </div>
    </form>
</body>
4

1 に答える 1

1

1- クライアント スライド機能のためだけに [挿入] ボタンを使用しているため、<asp:button>コントロールを に置き換えることをお勧めしhtml button tagます。この方法では、バリデーションが発生しなくなります。

2-使用する必要がある場合は、にasp:button設定できます。さらに良いことに、編集機能によって引き起こされるのを防ぐことができますcauseValidationfalsepost-backShowInsertForm

    function ShowInsertForm() {
        ValidatorEnable(document.getElementById('<%= TitleValidator.ClientID%>'), true);
        $('#InsertForm').show();
        return false;
    }
于 2012-10-28T16:50:04.287 に答える