9

私のASP.NETフォームには、次のような非標準の送信ボタンがあります。

<a class="button" href="#" onclick="this.blur();SubmitForm();"><span>Submit</span></a>

このため、必須フィールドのバリデーターがクライアント側で呼び出されていません。必須フィールドバリデーターは Javascript からどのように呼び出すことができますか?

あるいは、私がやろうとしていることを達成するためのより良い方法はありますか?

4

4 に答える 4

12

このために名付けられた組み込みのクライアント側関数を使用できますPage_ClientValidate。参照用に次のコード スニペットを確認してください。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClientSide_Validation.aspx.cs"
    Inherits="ClientSide_Validation" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function performCheck() {

            if (Page_ClientValidate()) {
            }

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lbl1" runat="server" Text="Please enter some value"></asp:Label>
        <asp:TextBox ID="txtbox1" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="valReq" ControlToValidate="txtbox1" runat="server"
            ErrorMessage="*" Display="Dynamic">
        </asp:RequiredFieldValidator>
        <input type="button" id="btnValidate" value="Submit" onclick="performCheck()" />
        <a href="#" onclick="performCheck();">Validate</a>
    </div>
    </form>
</body>
</html>
于 2011-06-20T18:42:48.397 に答える
8

Page_ClientValidateフォーム上のすべてのバリデーターの検証をトリガーし、@gilly3 が示すように、コレクションをループして呼び出してすべてを検証することもできますValidatorValidate(validator)

ただし、特定のバリデーターを 1 つだけ検証したい場合は、ValidatorValidate(validator)1 つのアイテムだけを呼び出す必要があります。

マスター ページまたはユーザー コントロールを使用している場合、要素 ID がマークアップで指定したものとはかなり異なる可能性があるため、validator 引数は取得するのが難しい DOM オブジェクトである必要があります。

例えば

<asp:RequiredFieldValidator ID="rfvCampaignStartDate" runat="server" .../>

になる

<span id="cph_0_rfvCampaignFile" ...>

このようなjQueryセレクターを使用して、プロジェクトの1つでこれを回避しました

ValidatorValidate($('[id$="rfvCampaignFile"]').get(0));

ASP.NET は、ID にプレフィックスを付けて一意の名前を作成するだけです。セレクターの一部を使用して、他のコントロールと衝突しないことを知っている Web サイトを書いたので、でid$=終わる ID に一致させることができます。"rfvCampaignFile"最後に.get(0)、一致した最初の (そして私の場合のみ) DOM オブジェクトへの DOM オブジェクト参照を返すために使用します。

于 2013-01-09T19:56:05.540 に答える
3

ASP.Net バリデーターのクライアント側 API を見てください。ページ上のすべてのバリデーターはArrayviaで公開されPage_Validatorsます。ValidatorValidate(validator)単一のバリデーターを呼び出して呼び出すことができます。したがって、ページ上のすべてのバリデーターを呼び出すには、次のことができます。

Page_Validators.forEach(ValidatorValidate);

ところで、Array.forEach古いブラウザーで使用するには、 Array を拡張する必要があります

于 2011-06-20T17:36:17.983 に答える
1

jquery を使用している場合は、ASP.NET コントロールClientIDMode = "Static"を設定すると、次のようにコードを読みやすくすることができます。

ValidatorValidate($('#MyControl'));

または非常によく似たもの。

于 2013-04-03T20:11:33.767 に答える