0

関連するテキストボックスが無効になっている場合(テキストボックスにテキストが含まれているかどうかに関係なく)、必須フィールドバリデーターは常に起動するようです。

テキストボックスが有効になっている場合、バリデータは正しく動作します。

理由を教えてもらえますか?

ValidatorEnable を使用して必須フィールドのバリデーターを無効にしようとしましたが、違いはないようです。

ページからの関連する HTML は次のとおりです (切り捨てられます)。

    <tr id="trBrokerNetID" runat="server">
    <td>
        <cc1:mitextbox id="txtBrokerNetID" runat="server" cssclass="bodytext" width="220px" maxlength="20" onBlur="JavaScript:CheckBrokerBranch(false);"></cc1:mitextbox>
        <asp:requiredfieldvalidator id="rfvBrokerNetID" runat="server" width="1px" errormessage="BrokerNetID - Please supply a value" controltovalidate="txtBrokerNetID">*</asp:requiredfieldvalidator>
    </td>
</tr>

どんなアイデアもありがたく受け取った。

4

3 に答える 3

1

ASP.NET のバリデーターは不思議な方法で動作します:D

まず第一に、ASP.NET コントロールの ID を使用して jQuery でアクセスするのは危険です。コントロールをリピーターに配置するか、ページをマスター ページにラップすると、html 要素の ID は指定した ID とは異なるものになります。代わりにクラスを使用して要素にアクセスしてください。

ASP.NET バリデーターがフィールドを有効にしたい場合は、別の方法を試す必要があります。私の提案は次のとおりです。

1. テキストボックスにクラスを追加して、無効に見えるようにします。

$("#txtBrokerNetID").addClass("thisClassMakesItLookDisabled");

2. フォーカスをチェックするイベントをテキスト ボックスに追加し、フォーカスがある場合はそれをぼかします。

$("#txtBrokerNetID").focus(function() {
  $(this).blur();
});

これで、フィールドは無効になっているかのように動作し、バリデーターが機能します。

于 2009-10-07T15:53:43.927 に答える
1

私が知らなかったのは、コントロールがクライアント側で無効になっていると、ポストバックに含まれないということでした。

これが、サーバー側の検証が開始された理由です。それに関する限り、コントロールは空でした。

解決策は、disabled プロパティではなく readOnly プロパティを使用することです。

次に、コントロールを無効にした場合と同じ外観にするために、コントロールのスタイルを設定する方法を理解します。

于 2009-10-08T12:49:07.653 に答える
0

選択できるオプションの 1 つは、Page_ClientValidate('text_validation_group')必要に応じてフォーム呼び出しを検証するときに、フォームが使用するものよりも ValidationGroup を設定することです。そうすれば、クライアントの検証が邪魔になりません。

于 2009-10-07T16:06:31.157 に答える